मान लीजिए कि हमारे पास कालानुक्रमिक क्रम में किसी कंपनी के दैनिक शेयर बाजार मूल्यों का प्रतिनिधित्व करने वाली कीमतों की एक सूची है। हमें एक ही लंबाई की सूची ढूंढनी होगी जहां सूचकांक पर मूल्य कम से कम दिनों की संख्या होगी, जब तक हम लाभ नहीं कमाएंगे। यदि लाभ कमाने का ऐसा कोई तरीका नहीं है तो मान 0 होना चाहिए।
इसलिए, यदि इनपुट कीमतों की तरह है =[4, 3, 5, 9, 7, 6], तो आउटपुट [2, 1, 1, 0, 0, 0] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- उत्तर :=कीमतों के समान आकार की एक सूची और 0 से भरें
- q :=एक नई सूची
- कीमतों में प्रत्येक अनुक्रमणिका i और मूल्य p के लिए, करें
- जबकि q खाली नहीं है और p>
q के अंतिम आइटम का दूसरा मान, करें
- j :=q के अंतिम तत्व का पहला आइटम
- Ans[j] :=i - j
- q से अंतिम तत्व हटाएं
- q के अंत में (i, p) डालें
- जबकि q खाली नहीं है और p>
q के अंतिम आइटम का दूसरा मान, करें
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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]