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

পাইথনে সেরা সময় স্টক কেনা-বেচা (Best Time to Buy and Sell Stock)

স্টক প্রাইস অ্যারে দেওয়া থাকে। সর্বোচ্চ একটি ট্রানজ্যাকশন (একবার কেনা, একবার বেচা) করা যাবে। সর্বোচ্চ প্রফিট বের করতে হবে। লেফট মিন এবং রাইট ম্যাক্স অ্যারে ব্যবহার করা হয়েছে।

সমাধানের পদ্ধতি

  1. leftMin এবং rightMax অ্যারে তৈরি করুন।
  2. leftMin[0] = prices[0], বাম থেকে ডানে মিনিমাম বানান।
  3. rightMax[-1] = prices[-1], ডান থেকে বামে ম্যাক্সিমাম বানান।
  4. প্রতিটি i জন্য max(rightMax[i+1] - leftMin[i]) বের করুন।

উদাহরণ কোড

class Solution(object):
    def maxProfit(self, prices):
        if not prices:
            return 0
        leftMin = [0 for i in range(len(prices))]
        rightMax = [0 for i in range(len(prices))]
        leftMin[0] = prices[0]
        for i in range(1, len(prices)):
            leftMin[i] = min(leftMin[i-1], prices[i])
        rightMax[-1] = prices[-1]
        for i in range(len(prices)-2, -1, -1):
            rightMax[i] = max(rightMax[i+1], prices[i])
        ans = 0
        for i in range(len(prices)-1):
            ans = max(ans, rightMax[i+1] - leftMin[i])
        return ans

ob1 = Solution()
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))

ইনপুট

prices = [7,2,5,8,6,3,1,4,5,4,7]

আউটপুট

6
  1. ব্যবহৃত অ্যান্ড্রয়েড ফোন কেনা ও বিক্রি করার ৫টি সেরা জায়গা

  2. পাইথনে BST-এর মেডিয়ান O(n) সময় এবং O(1) স্পেসে বের করা

  3. পাইথনে ভেক্টরাইজেশন (Vectorization) – পারফরম্যান্স অপ্টিমাইজেশন

  4. ২০২৪ সালের ক্রেজলিস্টের ১০টি বিশ্বস্ত বিকল্প কেনা ও বেচার জন্য