मान लीजिए कि हमारे पास कालानुक्रमिक क्रम में किसी कंपनी के स्टॉक की कीमतों की एक सूची है, तो हमें उस स्टॉक को खरीदने और बेचने से होने वाले अधिकतम लाभ का पता लगाना होगा। हमें बेचने से पहले खरीदना चाहिए, और फिर से खरीदने से पहले हमें स्टॉक बेचने के एक दिन बाद इंतजार करना चाहिए।
इसलिए, यदि इनपुट कीमतों की तरह है =[2, 6, 9, 4, 11], तो आउटपुट 11 होगा, जैसा कि हम 2 पर खरीद सकते हैं, फिर 6 पर बेच सकते हैं, एक दिन की प्रतीक्षा कर सकते हैं, फिर 4 पर खरीद सकते हैं और फिर 11 पर बेचें।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
-
एस:=0
-
बी:=-इन्फिनिटी
-
मेरे लिए 0 से लेकर कीमतों के आकार के बीच, करें
-
अस्थायी:=ख
-
b :=अधिकतम b और (s - मूल्य[i])
-
अगर मैं शून्य नहीं हूं, तो
-
s :=अधिकतम s और (अस्थायी + कीमतें[i - 1])
-
-
-
अधिकतम s और (b + कीमतों का अंतिम तत्व) लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, prices): s = 0 b = float("-inf") for i in range(len(prices)): temp = b b = max(b, s - prices[i]) if i: s = max(s, temp + prices[i - 1]) return max(s, b + prices[-1]) ob = Solution() prices = [2, 6, 9, 4, 11] print(ob.solve(prices))
इनपुट
[2, 6, 9, 4, 11]
आउटपुट
11