কম্পিউটার টিউটোরিয়াল

পাইথনে স্টক হোল্ড ও সেল করে সর্বোচ্চ প্রফিট বের করা

স্টক প্রাইস লিস্ট nums দেওয়া আছে। প্রতিদিন সর্বোচ্চ এক শেয়ার কিনা যায়, একাধিক শেয়ার হোল্ড করা যায়, যেকোনো দিন যেকোনো সংখ্যক শেয়ার বিক্রি করা যায়। সর্বোচ্চ প্রফিট বের করুন।

ইনপুট উদাহরণ

nums = [3, 4, 7, 3, 5]

আউটপুট: 9

ব্যাখ্যা

  • প্রাইস ৩ এবং ৪-এ কিনুন, ৭-এ বিক্রি: (7-3)+(7-4)=7
  • প্রাইস ৩-এ কিনুন, ৫-এ বিক্রি: 5-3=2
  • মোট প্রফিট = 7+2 = 9

অ্যালগরিদম

ডান থেকে বাম স্ক্যান করুন। সর্বোচ্চ ভবিষ্যৎ প্রাইস (top) ট্র্যাক করুন। যদি করেন্ট প্রাইস top-এর চেয়ে ছোট হয়, তবে top - current প্রফিট যোগ করুন।

পাইথন কোড

def solve(nums):
    ans = 0
    while nums:
        top = nums.pop()
        while nums and top > nums[-1]:
            ans += top - nums.pop()
    return ans

# টেস্ট
print(solve([3, 4, 7, 3, 5]))  # 9

ব্যাখ্যা

গ্রিডি অ্যালগরিদম: প্রতিটি লোকাল মিনিমাম থেকে পরবর্তী গ্লোবাল ম্যাক্সিমামে বেচে দাও। সময় জটিলতা O(n) কারণ প্রতিটি উপাদান একবার পপ হয়।

  1. পাইথনে ট্রানজ্যাকশন ফি সহ স্টক কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

  2. পাইথনে সংলগ্ন সাবঅ্যারের সর্বোচ্চ গুণফল খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে স্টক মার্কেটে একবার কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

  4. পাইথনে 'a' কে 'a' বা 'b' এবং 'b' কে 'b' রেখে বানানো সম্ভাব্য স্ট্রিং সংখ্যা বের করার প্রোগ্রাম