मान लीजिए हमारे पास nums नामक संख्याओं की एक लिस्ट है जिसकी लंबाई कम से कम 2 है। हमें लिस्ट में हर पीक का इंडेक्स ढूंढना है। लिस्ट आरोही क्रम में सॉर्टेड है। एक इंडेक्स i पीक होता है जब:
nums[i] > nums[i + 1]जबi = 0nums[i] > nums[i - 1]जबi = n - 1nums[i - 1] < nums[i] > nums[i + 1]अन्यथा
उदाहरण के लिए, यदि इनपुट है nums = [5, 6, 7, 6, 9], तो आउटपुट होगा [2, 4], क्योंकि इंडेक्स 2 पर तत्व 7 है जो दोनों पड़ोसियों से बड़ा है, और इंडेक्स 4 पर आइटम 9 है, यह अपने बाएं आइटम से बड़ा है।
समाधान दृष्टिकोण
सभी इंडेक्स पर पुनरावृति करें और परिभाषा के अनुसार पीक की शर्तों की जांच करें।
ansखाली लिस्ट से आरंभ करें।n = len(nums)।- यदि
n == 1, तो खाली लिस्ट लौटाएं। - प्रत्येक इंडेक्स
iऔर संख्याnumके लिए:- यदि
0 < i < n-1औरnums[i-1] < num > nums[i+1], तोiजोड़ें। - यदि
i == 0औरnum > nums[1], तोiजोड़ें। - यदि
i == n-1औरnum > nums[n-2], तोiजोड़ें।
- यदि
ansलौटाएं।
पायथन कार्यान्वयन
def solve(nums):
ans = []
n = len(nums)
if n == 1:
return ans
for i, num in enumerate(nums):
if i > 0 and i < n - 1:
if nums[i - 1] < num > nums[i + 1]:
ans.append(i)
if i == 0:
if num > nums[i + 1]:
ans.append(i)
if i == n - 1:
if num > nums[i - 1]:
ans.append(i)
return ans
nums = [5, 6, 7, 6, 9]
print(solve(nums))
इनपुट
[5, 6, 7, 6, 9]
आउटपुट
[2, 4]