মনে করুন nums একটি সংখ্যার তালিকা। প্রতিটি ইনডেক্স i-এর জন্য ডান পাশের (সার্কুলারলি) প্রথম বড় উপাদান খুঁজে বের করতে হবে। না পাওয়া গেলে -1।
উদাহরণস্বরূপ, [4, 5, 1, 3] হলে আউটপুট [5, -1, 3, 4]।
সমাধানের ধাপসমূহ
- n := a-এর আকার
- stack := [0], res := [-1]*n
- ২ বার লুপ (সার্কুলার হ্যান্ডল করার জন্য),
- i = 0 থেকে n-1 পর্যন্ত,
- যখন stack নন-এম্পটি এবং a[stack[-1]] < a[i], res[stack[-1]] = a[i], stack.pop()
- stack.append(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]