मान लीजिए कि हमारे पास कालानुक्रमिक क्रम में किसी कंपनी के स्टॉक की कीमतों का प्रतिनिधित्व करने वाली कीमतों की एक सूची है, तो हमें उस स्टॉक को केवल एक बार खरीदने और बेचने से अधिकतम लाभ प्राप्त करना होगा। हमें यह ध्यान रखना होगा कि हमें इसे बेचने से पहले खरीदना चाहिए।
इसलिए, यदि इनपुट कीमतों की तरह है =[10, 12, 9, 6, 8, 12], तो आउटपुट 6 होगा, क्योंकि हम 6 पर खरीद सकते हैं और 12 पर बेच सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अधिकतम_लाभ:=0
- मिन_स्टॉक:=अनंत
- कीमतों में प्रत्येक मूल्य के लिए, करें
- अधिकतम_लाभ :=अधिकतम_लाभ और (कीमत - न्यूनतम_स्टॉक)
- मिन_स्टॉक:=न्यूनतम न्यूनतम स्टॉक और कीमत
- अधिकतम_लाभ लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, prices): max_profit = 0 min_stock = float('inf') for price in prices: max_profit = max(max_profit, price - min_stock) min_stock = min(min_stock, price) return max_profit ob = Solution() print(ob.solve([10, 12, 9, 6, 8, 12]))
इनपुट
[10, 12, 9, 6, 8, 12]
आउटपुट
6