ধরুন আমাদের কাছে কালানুক্রমিক ক্রমানুসারে একটি কোম্পানির দৈনিক স্টক মার্কেটের দামের প্রতিনিধিত্বকারী দামের একটি তালিকা আছে। আমাদের একটি একই দৈর্ঘ্যের তালিকা খুঁজে বের করতে হবে যেখানে সূচক i এর মান হবে ন্যূনতম কত দিন অপেক্ষা করতে হবে যতক্ষণ না আমরা লাভ করি। যদি লাভ করার কোন উপায় না থাকে তাহলে মান 0 হওয়া উচিত।
সুতরাং, ইনপুট যদি দামের মত হয় =[4, 3, 5, 9, 7, 6], তাহলে আউটপুট হবে [2, 1, 1, 0, 0, 0]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- উত্তর :=মূল্যের মতো আকারের একটি তালিকা এবং 0 দিয়ে পূরণ করুন
- q :=একটি নতুন তালিকা
- প্রতিটি সূচক i এবং মূল্য p মূল্যের জন্য, করুন
- যখন q খালি নয় এবং p>
q এর শেষ আইটেমের দ্বিতীয় মান, do
- j :=q এর শেষ উপাদানের প্রথম আইটেম
- উত্তর [j] :=i - j
- q থেকে শেষ উপাদান মুছুন
- q এর শেষে (i, p) সন্নিবেশ করুন
- যখন q খালি নয় এবং p>
q এর শেষ আইটেমের দ্বিতীয় মান, do
- উত্তর ফেরত দিন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
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]