ধরুন আমাদের কাছে কালানুক্রমিক ক্রমানুসারে একটি কোম্পানির স্টক মূল্যের প্রতিনিধিত্বকারী দামের একটি তালিকা আছে, আমাদের খুঁজে বের করতে হবে যে স্টকটি যে কোনো সংখ্যক বার ক্রয় এবং বিক্রি করে আমরা সর্বাধিক লাভ করতে পারতাম। আমাদের মনে রাখতে হবে যে বিক্রি করার আগে আমাদের অবশ্যই কিনতে হবে।
সুতরাং, ইনপুট যদি দামের মত হয় =[10, 50, 30, 40, 60], তাহলে আউটপুট হবে 70, যেমন আমরা 10-এ কিনতে পারি, 50-এ বিক্রি করতে পারি, 30-এ কিনতে পারি এবং 60-এ বিক্রি করতে পারি। পি>
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- prev_price :=infinity
- লাভ :=0
- প্রতিটি p দামের জন্য, করুন
- যদি p>
prev_price, তারপর
- লাভ :=মুনাফা + p - prev_price
- prev_price :=p
- যদি p>
prev_price, তারপর
- মুনাফা ফেরত
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, prices): prev_price = float("inf") profit = 0 for p in prices: if p > prev_price: profit += p - prev_price prev_price = p return profit ob = Solution() print(ob.solve([10, 50, 30, 40, 60]))
ইনপুট
[10, 50, 30, 40, 60]
আউটপুট
70