मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है। हमें उसी लंबाई की एक नई सूची ढूंढनी होगी जहां इंडेक्स i पर मान अगले तत्व को nums [i] से अधिक दाईं ओर असाइन किया गया है, जब आवश्यक हो तो सूची के सामने वापस चक्कर लगा रहा है। यदि कोई बड़ी संख्या नहीं है, तो उसे -1 पर सेट किया जाना चाहिए।
इसलिए, यदि इनपुट [4, 5, 1, 3] जैसा है, तो आउटपुट [5, -1, 3, 4]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे-
-
n :=आकार का
-
स्टैक:=एक स्टैक, प्रारंभ में 0 डालें, रेस:=आकार n की एक सूची और -1 से भरें
-
0 और 1 की श्रेणी में प्रत्येक मान के लिए करें
-
मेरे लिए 0 से n-1 की सीमा में, करें
-
जबकि स्टैक खाली नहीं है और एक [स्टैक का शीर्ष]
-
रेस [स्टैक के ऊपर] :=a[i]
-
स्टैक से अंतिम तत्व हटाएं
-
-
स्टैक के अंत में i डालें
-
-
रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, a): n = len(a) stack, res = [0], [-1] * n for _ in range(2): for i in range(n): while stack and a[stack[-1]] < a[i]: res[stack[-1]] = a[i] stack.pop() stack.append(i) return res ob = Solution() nums = [4, 5, 1, 3] print(ob.solve(nums))
इनपुट
[4, 5, 1, 3]
आउटपुट
[5, -1, 3, 4]