প্রতিদিনের স্টক প্রাইসের তালিকা দেওয়া আছে। প্রতিটি দিনের জন্য লাভ করতে হলে ন্যূনতম কত দিন অপেক্ষা করতে হবে তা বের করুন। লাভ সম্ভব নাও হলে ০।
উদাহরণ: prices = [4,3,5,9,7,6] → আউটপুট [2,1,1,0,0,0]।
সমাধানের ধাপগুলো:
- মনোটোনিক স্ট্যাক ব্যবহার করুন।
- প্রতিটি প্রাইসের জন্য স্ট্যাকের টপের চেয়ে বড় হলে পপ করে দিনের পার্থক্য রেকর্ড করুন।
উদাহরণ
class Solution:
def solve(self, prices):
ans = [0 for _ in prices]
q = []
for i, p in enumerate(prices):
while q and p > q[-1][1]:
j = q[-1][0]
ans[j] = i - j
q.pop()
q.append((i, p))
return ans
ob = Solution()
prices = [4, 3, 5, 9, 7, 6]
print(ob.solve(prices))
ইনপুট
[4, 3, 5, 9, 7, 6]
আউটপুট
[2, 1, 1, 0, 0, 0]