লেনদেন ফি ফি লেটকোড সলিউশন সহ স্টক কেনা বেচার সেরা সময়


কাঠিন্য মাত্রা মধ্যম
প্রায়শই জিজ্ঞাসা করা হয় মর্দানী স্ত্রীলোক
বিন্যাস ডায়নামিক প্রোগ্রামিং লোভী

সমস্যা বিবৃতি

"লেনদেন ফি সহ স্টক কেনার এবং বিক্রয় করার সর্বোত্তম সময়" সমস্যাটিতে আমাদের একটি অ্যারে দেওয়া হয় যেখানে অ্যারেতে প্রতিটি উপাদান সেই দিন প্রদত্ত স্টকের দাম ধারণ করে।

সংজ্ঞা লেনদেন শেয়ারের এক ভাগ কিনছে এবং সেই শেয়ারের এক ভাগ বিক্রয় করছে।

আমাদের কাজটি নিম্নলিখিত বিধিনিষেধের আওতায় সর্বাধিক মুনাফা অর্জন করা:

  1. আমরা আগের শেয়ারটি বিক্রি না করে আমরা নতুন স্টক কিনতে পারি না। এটি এমন একটি সময়ে আমাদের সর্বাধিক একটি স্টক থাকতে পারে।
  2. আমরা একাধিক লেনদেন করতে পারি।
  3. প্রতিবার আমরা কোনও লেনদেন করব আমাদের লেনদেনের ফি প্রদান করতে হবে।
  4. একসাথে আমরা একাধিক স্টক কিনতে পারি না।

উদাহরণ

prices = [1, 3, 2, 8, 4, 9], fee=2
8

ব্যাখ্যা: প্রাপ্ত সর্বাধিক মুনাফা 8 হয় লেনদেনের বিশদ:

লেনদেন ফি ফি লেটকোড সলিউশন সহ স্টক কেনা বেচার সেরা সময়

লেনদেন ফি ফি লেটকোড সলিউশন সহ স্টক কেনা বেচা করার সেরা সময়ের পদ্ধতির

এই সমস্যাটি সমাধান করার জন্য আমাদের কীভাবে স্টক কেনা বেচা করে লাভটি সর্বাধিকীকরণ করা যায় তা নিয়ে চিন্তা করা দরকার। সর্বাধিক মুনাফা অর্জনের এই উপায়গুলি:

  1. আমরা সর্বনিম্ন মূল্যে স্টকটি কিনব এবং সর্বোচ্চ দামে বিক্রয় করব sell
  2. যেহেতু প্রতিটি লেনদেনের জন্য আমাদের একটি ফি প্রদান করতে হবে, আমরা যখন বিক্রয় মূল্য> ব্যয়মূল্য + ফি করব তখনই আমরা স্টকটি বিক্রি করব।
  3. সর্বাধিক বিক্রয়মূল্যের সন্ধান করা সত্ত্বেও, যখন আমরা বিক্রয়মূল্য> দামের দাম + ফি পড়ি তখন আমরা স্টকটি বিক্রি করব। তারপরে ব্যয় মূল্যটি হয়ে যাবে মূল্য-ফি।

বাস্তবায়ন

লেনদেন ফি সহ স্টক কেনার এবং বেচার জন্য সেরা সময়ের জন্য সি ++ কোড

//function to find maximum profit
#include <bits/stdc++.h> 
using namespace std; 
    int Profit(vector<int>& prices, int fee) {
        int n = prices.size();
        int ans = 0;
        int mn = prices[0];
        for(int i=0;i<n;i++)
        {
         if (prices[i] < mn)
                mn = prices[i];
         if(prices[i] > mn + fee)
         {
              ans += prices[i] - fee - mn;
              mn = prices[i] - fee;
         }
            
        }
           return ans;  
    }

int main() 
{ 
 vector<int> arr = {1, 3, 2, 8, 4, 9}; 
 int fee=2;
 cout<<Profit(arr,fee)<<endl; 
 return 0;
}
8

লেনদেন ফি সহ স্টক কেনার এবং বেচার জন্য বেস্ট টাইমের জাভা কোড

import java.util.Arrays; 
public class Tutorialcup {
 public static  int maxProfit(int[] prices, int fee) {
        int n = prices.length;
        int ans = 0;
        int mn = prices[0];
        for(int i=0;i<n;i++)
        {
         if (prices[i] < mn)
                mn = prices[i];
         if(prices[i] > mn + fee)
         {
              ans += prices[i] - fee - mn;
              mn = prices[i] - fee;
         }
            
        }
           return ans;  
    }
  public static void main(String[] args) {
    int [] arr = {1, 3, 2, 8, 4, 9}; 
    int fee=2;
    int ans=  maxProfit(arr,fee);
    System.out.println(ans);
  }
}
8

লেনদেন ফী লেটকোড সমাধান সহ স্টক কেনার এবং বেচার জন্য বেস্ট টাইমের জটিলতা বিশ্লেষণ

সময়ের জটিলতা

উপরের কোডটির সময় জটিলতা উপর) কারণ আমরা একবারে দামের অ্যারেটি অতিক্রম করছি। এখানে n দাম অ্যারের দৈর্ঘ্য।

স্থান জটিলতা

ও (1) কারণ আমরা কেবল উত্তর সঞ্চয় করতে মেমরি ব্যবহার করি।

তথ্যসূত্র