কম্পিউটার

পাইথনে স্টক কেনা এবং বিক্রি করার সেরা সময়


ধরুন আমাদের একটি অ্যারে আছে, এখানে A[i] দিন i-এ একটি প্রদত্ত স্টকের দাম নির্দেশ করছে। আমাদের সর্বোচ্চ লাভ খুঁজে বের করতে হবে। আমরা সর্বাধিক একটি লেনদেন সম্পূর্ণ করতে পারি। (লেনদেন মানে স্টক ক্রয়-বিক্রয়)। কিন্তু আমাদের মনে রাখতে হবে যে আমরা একই সময়ে একাধিক লেনদেনে জড়িত নাও হতে পারি। তাই নতুন কেনার আগে আমাদের স্টক বিক্রি করতে হবে।

ধরুন অ্যারেটি A =[7, 1, 5, 3, 6, 4] এর মতো, তাহলে ফলাফলটি 5 হবে। আমরা দেখতে পাচ্ছি, আমরা যদি 2 য় দিনে (সূচী 1) কিনি তবে এটি 1 হিসাবে নিবে। একটি ক্রয় মূল্য। তারপর যদি আমরা ৫ম দিনে বিক্রি করি, লাভ হবে ৬ – ১ =৫।

এটি সমাধান করতে, এই ধাপগুলি অনুসরণ করুন -

  • A এর মতই আকারের দুটি অ্যারে লেফটমিন এবং রাইটম্যাক্স তৈরি করুন এবং সেগুলি 0s দিয়ে পূরণ করুন
  • leftMin[0] =A[0]
  • আমি রেঞ্জ 1 থেকে A – 1 এর দৈর্ঘ্যের জন্য, leftMin[i] =সর্বনিম্ন leftMin[i – 1] এবং A[i]
  • rightMax[n-1] =A[n – 1]
  • এ - 1 থেকে 1 পর্যন্ত রেঞ্জের দৈর্ঘ্যের i জন্য, rightMax[i] =সর্বাধিক rightMax[i + 1] এবং A[i]
  • উত্তর সেট করুন :=0
  • আমি 0 থেকে A – 1 এর দৈর্ঘ্যের মধ্যে, উত্তর :=উত্তরের সর্বোচ্চ এবং rightMax[i + 1] – leftMin[i]
  • উত্তর ফেরত দিন

আসুন আরও ভালভাবে বোঝার জন্য বাস্তবায়ন দেখি

উদাহরণ

class Solution(object):
   def maxProfit(self, prices):
      """
      :type prices: List[int]
      :rtype: int
      """
      if not prices:
         return 0
      leftMin,rightMax = [0 for i in range(len(prices))],[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])
      #print(leftMin)
      rightMax[-1]= prices[-1]
      for i in range(len(prices)-2,-1,-1):
         rightMax[i] = max(rightMax[i+1],prices[i])
      #print(rightMax)
      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. ব্যবহৃত অ্যান্ড্রয়েড ফোন কেনা এবং বিক্রি করার 5টি সেরা জায়গা

  2. পাইথনে O(n) সময়ে BST এবং O(1) স্থানের মধ্যমা খুঁজুন

  3. পাইথনে ভেক্টরাইজেশন

  4. 2022 সালে ক্রেগলিস্টের মতো 10টি সাইট