मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है। हमें nums में हर शिखर तत्व का इंडेक्स ढूंढना है, जो आरोही क्रम में सॉर्टेड हो। एक इंडेक्स i शिखर तत्व का होता है जब ये तीनों शर्तें पूरी होती हैं: 1. इसके दाईं ओर अगली संख्या जो nums[i] से अलग है, मौजूद नहीं है या nums[i] से छोटी होनी चाहिए 2. इसके बाईं ओर पिछली संख्या जो nums[i] से अलग है, मौजूद नहीं है या nums[i] से छोटी होनी चाहिए 3. इसके बाईं ओर या दाईं ओर कम से कम एक संख्या होनी चाहिए जो nums[i] से अलग हो।
इसलिए, यदि इनपुट है nums = [5, 8, 8, 8, 6, 11, 11], तो आउटपुट [1, 2, 3, 5, 6] होगा, क्योंकि 8 का पठार शिखर माना जाता है [1,2,3]। और 11 भी [5, 6]।
हल करने का दृष्टिकोण
- n := nums का आकार
- ans := एक नई सूची
- i := 0
- जब तक i < n, करें:
- i0 := i
- जब तक i < n और nums[i] nums[i0] के समान है, करें:
- i := i + 1
- यदि (i0 0 है या nums[i0] > nums[i0-1]) और (i n है या nums[i0] > nums[i]), तो:
- यदि i0 0 नहीं है या i n नहीं है, तो:
- i0 से i-1 तक की सूची को ans के अंत में डालें
- यदि i0 0 नहीं है या i n नहीं है, तो:
- ans लौटाएं
उदाहरण
def solve(nums):
n = len(nums)
ans = []
i = 0
while i < n:
i0 = i
while i < n and nums[i] == nums[i0]:
i += 1
if (i0 == 0 or nums[i0] > nums[i0 - 1]) and (i == n or nums[i0] > nums[i]):
if i0 != 0 or i != n:
ans.extend(range(i0, i))
return ans
nums = [5, 8, 8, 8, 6, 11, 11]
print(solve(nums))
इनपुट
[5, 8, 8, 8, 6, 11, 11]
आउटपुट
[1, 2, 3, 5, 6]