मान लीजिए कि हमें एक सरणी में शिखर तत्व खोजना है। शिखर तत्व एक ऐसा तत्व है जो अपने पड़ोसियों से बड़ा है। मान लीजिए कि हमारे पास एक इनपुट ऐरे नंबर है, जहां nums[i] nums[i+1], एक पीक एलिमेंट की खोज करें और उसका इंडेक्स लौटाएं। सरणी कई शिखर तत्वों को धारण कर सकती है, उस स्थिति में सूचकांक को शिखर तत्वों में से किसी एक पर लौटाता है। हम कल्पना कर सकते हैं कि nums[-1] =nums[n] =-∞. इसलिए अगर ऐरे [1,2,1,3,5,6,4] जैसा है, तो पीक एलिमेंट 1 या 5 होने चाहिए।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- निम्न:=0 और उच्च:=सरणी का अंतिम सूचकांक, n:=सरणी का आकार, उत्तर:=अनंत
- जबकि कम <=उच्च
- मध्य :=निम्न + (उच्च-निम्न)/2
- यदि मध्य -1>=0 और अंक [मध्य -1] <=अंक [मध्य], तो निम्न:=मध्य, अन्यथा उच्च:=मध्य -1
- कम वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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