এই সমস্যায় প্রতিদিনের তাপমাত্রার একটি লিস্ট দেওয়া থাকলে, প্রতিটি দিনের জন্য কতদিন পর তাপমাত্রা বেশি হবে তা বের করতে হবে। যদি ভবিষ্যতে আরও গরম দিন না থাকে, তবে ০ রাখতে হবে।
উদাহরণস্বরূপ, T = [73, 74, 75, 71, 69, 72, 76, 73] এর জন্য আউটপুট হবে [1, 1, 4, 2, 1, 1, 0, 0]।
সমাধানের পদ্ধতি (Monotonic Stack)
ansঅ্যারে ০ দিয়ে ইনিশিয়ালাইজ করুন।- একটি স্ট্যাক রাখুন যাতে ইন্ডেক্সগুলো রাখা হবে (মনোটোনিক ডিক্রিজিং)।
- প্রতিটি দিন
iএর জন্য, যতক্ষণ স্ট্যাক খালি নয় এবংT[i] > T[stack.top()]:- টপ ইন্ডেক্স পপ করুন এবং
ans[top] = i - topসেট করুন।
- টপ ইন্ডেক্স পপ করুন এবং
- কারেন্ট ইন্ডেক্স
iস্টാക്കে পুশ করুন।
উদাহরণ (Python)
class Solution(object):
def dailyTemperatures(self, T):
ans = [0] * len(T)
stack = []
for i in range(len(T)):
while stack and T[i] > T[stack[-1]]:
idx = stack.pop()
ans[idx] = i - idx
stack.append(i)
return ans
ob1 = Solution()
print(ob1.dailyTemperatures([73, 74, 75, 71, 69, 72, 76, 73]))
ইনপুট
[73, 74, 75, 71, 69, 72, 76, 73]
আউটপুট
[1, 1, 4, 2, 1, 1, 0, 0]