ধরুন আমাদের কাছে কালানুক্রমিক ক্রমানুসারে একটি কোম্পানির স্টক মূল্যের প্রতিনিধিত্বকারী দামের একটি তালিকা আছে, আমাদের শুধুমাত্র একবার সেই স্টক ক্রয় এবং বিক্রয় থেকে আমরা সর্বোচ্চ লাভ করতে পারতাম তা খুঁজে বের করতে হবে। আমাদের মনে রাখতে হবে যে বিক্রি করার আগে আমাদের অবশ্যই কিনতে হবে।
সুতরাং, ইনপুট যদি দামের মত হয় =[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