ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা রয়েছে, যা কালানুক্রমিক ক্রমে একটি কোম্পানির স্টক মূল্যের প্রতিনিধিত্ব করছে। আমরা প্রতিদিন সর্বাধিক একটি শেয়ার কিনতে পারি, কিন্তু আপনি একাধিক স্টক ধরে রাখতে পারেন এবং যে কোনো দিনে স্টক বিক্রি করতে পারেন। আপনি যে সর্বোচ্চ মুনাফা অর্জন করতে পারেন তা ফেরত দিন।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[3, 4, 7, 3, 5], তাহলে আউটপুট হবে 9, কারণ আমরা 3 এবং 4 এ স্টক কিনতে পারি এবং 7 এ বিক্রি করতে পারি। তারপর আবার 3 এ কিনুন এবং 5 এ বিক্রি করুন। মোট লাভ (7 - 3) + (7 - 4) + (5 - 3) =9।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- উত্তর :=0
- সংখ্যা খালি না থাকলেও করুন
- টপ :=সংখ্যা থেকে শেষ উপাদান মুছে দিন
- সংখ্যা খালি না থাকলে এবং উপরের> সংখ্যার শেষ উপাদান, কর
- উত্তর :=উত্তর + (সংখ্যা থেকে শীর্ষ - শেষ উপাদান)
- সংখ্যা থেকে শেষ উপাদান মুছুন
- উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): ans = 0 while nums: top = nums.pop() while nums and top > nums[-1]: ans += top - nums.pop() return ans nums = [3, 4, 7, 3, 5] print(solve(nums))
ইনপুট
[3, 4, 7, 3, 5]
আউটপুট
9