ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা। আমাদের একই দৈর্ঘ্যের একটি নতুন তালিকা খুঁজে বের করতে হবে যেখানে সূচী i-এর মানটি তার ডানদিকে nums[i] এর চেয়ে বড় পরবর্তী উপাদানের জন্য বরাদ্দ করা হয়েছে, প্রয়োজনে তালিকার সামনের দিকে প্রদক্ষিণ করে। যদি বড় কোন সংখ্যা না থাকে, তাহলে সেটিকে -1 সেট করা উচিত।
সুতরাং, যদি ইনপুটটি [4, 5, 1, 3] এর মত হয়, তাহলে আউটপুট হবে [5, -1, 3, 4]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব−
-
n :=a
এর আকার -
স্ট্যাক :=একটি স্ট্যাক, প্রথমে 0 ঢোকান, res :=n আকারের একটি তালিকা এবং -1 দিয়ে পূরণ করুন
-
0 এবং 1 পরিসরের প্রতিটি মানের জন্য, করুন
-
0 থেকে n-1 রেঞ্জের জন্য, করুন
-
যখন স্ট্যাক খালি না থাকে এবং [স্ট্যাকের উপরে]
-
res[স্ট্যাকের শীর্ষ] :=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]