মান করুন একটি অ্যারেতে পিক এলিমেন্ট খুঁজে বের করতে হবে। পিক এলিমেন্ট হচ্ছে সে উপাদান যা এর প্রতিবেশীদের চেয়ে বড়। ইনপুট অ্যারে 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