मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है। हमें सबसे लंबी सबलिस्ट की लंबाई इस तरह से ढूंढनी है कि (न्यूनतम लंबाई 3) इसके मान सख्ती से बढ़ रहे हैं और फिर घट रहे हैं।
इसलिए, यदि इनपुट संख्या =[7, 1, 3, 5, 2, 0] की तरह है, तो आउटपुट 5 होगा, क्योंकि सबलिस्ट [2, 4, 6, 3, 1] सख्ती से बढ़ रहा है फिर घट रहा है ।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- i :=0, n :=आकार a, res :=-infinity
- जबकि मैं
- सेंट:=मैं
- लिंक:=0, एलडीसी:=0
- जबकि मैं
- लिंक:=लिंक + 1
- i :=i + 1
- एलडीसी:=एलडीईसी + 1
- i :=i + 1
- res :=अधिकतम रेस और (i - st + 1)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, a): i, n, res = 0, len(a), float("-inf") while i < n - 2: st = i linc, ldec = 0, 0 while i < n - 1 and a[i] < a[i + 1]: linc += 1 i += 1 while i < n - 1 and a[i] > a[i + 1]: ldec += 1 i += 1 if linc > 0 and ldec > 0: res = max(res, i - st + 1) while i < n - 1 and a[i] == a[i + 1]: i += 1 return res if res >= 0 else 0 ob = Solution() nums = [8, 2, 4, 6, 3, 1] print(ob.solve(nums))
इनपुट
[[8, 2, 4, 6, 3, 1]
आउटपुट
5