কম্পিউটার টিউটোরিয়াল

পাইথনে Find Peak Element (পিক এলিমেন্ট খুঁজে বের করা)


মান করুন একটি অ্যারেতে পিক এলিমেন্ট খুঁজে বের করতে হবে। পিক এলিমেন্ট হচ্ছে সে উপাদান যা এর প্রতিবেশীদের চেয়ে বড়। ইনপুট অ্যারে nums যেখানে nums[i] != nums[i+1], একটি পিক এলিমেন্ট সার্চ করুন এবং এর ইনডেক্স রিটার্ন করুন। অ্যারেতে একাধিক পিক এলিমেন্ট থাকতে পারে, সেক্ষেত্রে যেকোনো একটি পিক এলিমেন্টের ইনডেক্স রিটার্ন করুন। আমরা কল্পনা করতে পারি nums[-1] = nums[n] = -∞। অ্যারে [1,2,1,3,5,6,4] হলে পিক এলিমেন্টগুলো হবে ইনডেক্স ১ বা ৫।

সমাধানের ধাপগুলো (বাইনারি সার্চ):

  • low := 0 এবং high := অ্যারের শেষ ইনডেক্স, n := অ্যারের সাইজ
  • low <= high যতক্ষণ
    • mid := low + (high - low) // 2
    • যদি mid - 1 >= 0 এবং nums[mid - 1] <= nums[mid], তবে low := mid, অন্যথায় high := mid - 1
  • low রিটার্ন করুন

নিচে ইমপ্লিমেন্টেশন দেওয়া হলো:

উদাহরণ

class Solution(object):
    def findPeakElement(self, nums):
        low = 0
        high = len(nums) - 1
        while low < high:
            mid = low + (high - low + 1) // 2
            if (mid - 1 >= 0 and nums[mid - 1] <= nums[mid]):
                low = mid
            else:
                high = mid - 1
        return nums[low + 1]

ob1 = Solution()
print(ob1.findPeakElement([15, 35, 85, 96, 5, 6, 8, 12]))

ইনপুট

[15,35,85,96,5,6,8,12]

আউটপুট

5
  1. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

  2. পাইথনে অ্যারে থেকে সর্বোচ্চ এলিমেন্ট বের করা

  3. পাইথন প্রোগ্রাম: ২ডি অ্যারে-তে k-তম ছোট এলিমেন্ট বের করা

  4. পাইথন লিস্টে একটি উপাদানের ইনডেক্স খুঁজে বের করার পদ্ধতি