मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है। हमें समान लंबाई की एक नई सूची ढूंढनी है जहां इंडेक्स i पर मान, nums[i] के दाएं ओर के अगले बड़े तत्व को सौंपा गया है, आवश्यकता पड़ने पर सूची के सामने की ओर घूमकर। यदि कोई बड़ी संख्या नहीं है, तो इसे -1 पर सेट करना चाहिए।
उदाहरण के लिए, यदि इनपुट [4, 5, 1, 3] है, तो आउटपुट [5, -1, 3, 4] होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- n := a का आकार
- stack := एक स्टैक, प्रारंभ में 0 डालें, res := आकार n की सूची, -1 से भरी हुई
- 0 और 1 के लिए प्रत्येक मान के लिए करें:
- i को 0 से n-1 तक के लिए करें:
- जब तक stack खाली नहीं है और a[stack[-1]] < a[i], करें:
- res[stack[-1]] := a[i]
- stack से अंतिम तत्व हटाएं
- stack के अंत में i डालें
- जब तक stack खाली नहीं है और a[stack[-1]] < a[i], करें:
- i को 0 से n-1 तक के लिए करें:
- res वापस करें
उदाहरण
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]