मान लीजिए हमारे पास एक सरणी A है, यहां A[i] दिन i पर दिए गए स्टॉक की कीमत दर्शाता है। हमें अधिकतम लाभ ढूंढना है। हम जितने चाहें उतने लेनदेन पूरे कर सकते हैं। (लेनदेन का मतलब स्टॉक खरीदना और बेचना है)। लेकिन हमें ध्यान रखना होगा कि हम एक ही समय में कई लेनदेन में संलग्न नहीं हो सकते। इसलिए हमें नया खरीदने से पहले स्टॉक बेचना होगा।
मान लीजिए सरणी A = [7, 1, 5, 3, 6, 4] जैसी है, तो परिणाम 7 होगा। जैसा कि हम देख सकते हैं, यदि हम दिन 2 (इंडेक्स 1) पर खरीदते हैं, तो यह 1 को खरीद मूल्य के रूप में लेगा। फिर यदि हम दिन 3 पर बेचते हैं, तो लाभ 5 - 1 = 4 होगा। फिर दिन 4 पर खरीदें, और दिन 5 पर बेचें, तो लाभ 6 - 3 = 3 होगा।
हल करने के चरण
- answer = 0 मान लें
- i को 0 से n - 1 तक रेंज में लिए (n A में तत्वों की संख्या है)
- यदि A[i] - A[i - 1] > 0, तो
- answer := answer + A[i] - A[i - 1]
- यदि A[i] - A[i - 1] > 0, तो
- answer वापस करें
उदाहरण
बेहतर समझ के लिए कार्यान्वयन देखें:
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
ans = 0
for i in range(1,len(prices)):
if prices[i] - prices[i-1] >0:
ans+=(prices[i] - prices[i-1])
return ans
ob1 = Solution()
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))
इनपुट
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))
आउटपुट
13