ধরুন আমাদের একটি অ্যারে আছে, এখানে A[i] দিন i-এ একটি প্রদত্ত স্টকের দাম নির্দেশ করছে। আমাদের সর্বোচ্চ লাভ খুঁজে বের করতে হবে। আমরা যত খুশি তত লেনদেন সম্পন্ন করতে পারি। (লেনদেন মানে স্টক কেনা বেচা)। কিন্তু আমাদের মনে রাখতে হবে যে আমরা একই সময়ে একাধিক লেনদেনে জড়িত নাও হতে পারি। তাই নতুন কেনার আগে আমাদের স্টক বিক্রি করতে হবে।
ধরুন অ্যারেটি A =[7, 1, 5, 3, 6, 4] এর মতো, তাহলে ফলাফলটি 7 হবে। আমরা দেখতে পাচ্ছি, আমরা যদি 2 দিন (সূচী 1) কিনি তবে এটি 1 হিসাবে নিবে। একটি ক্রয় মূল্য। তারপর যদি আমরা ৩য় দিনে বিক্রি করি, লাভ হবে ৫ – ১ =৪। তারপর ৪ দিন কিনুন, আর ৫ দিন বিক্রি করুন, তাহলে লাভ হবে ৬ – ৩ =৩
এটি সমাধান করতে, এই ধাপগুলি অনুসরণ করুন -
- উত্তর দিন =0
- 0 থেকে n – 1 রেঞ্জের i এর জন্য (n হল A তে উপাদানের সংখ্যা) −
- যদি A[i] – A[i – 1]> 0, তারপর
- উত্তর :=উত্তর + A[i] – A[i – 1]
- যদি A[i] – A[i – 1]> 0, তারপর
- উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য বাস্তবায়ন দেখি
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