સ્ટોક II લીટકોડ સોલ્યુશનને ખરીદવા અને વેચવાનો શ્રેષ્ઠ સમય


મુશ્કેલી સ્તર સરળ
વારંવાર પૂછવામાં આવે છે એમેઝોન ડીઇ શw ફેસબુક માઈક્રોસોફ્ટ મોર્ગન સ્ટેન્લી ઉબેર
અરે લોભી

સમસ્યા નિવેદન

"સ્ટોક II ને ખરીદવાનો અને વેચવાનો શ્રેષ્ઠ સમય" સમસ્યામાં અમને એરે આપવામાં આવે છે જ્યાં એરેના દરેક ઘટકમાં તે દિવસે આપેલા સ્ટોકની કિંમત હોય છે.

ની વ્યાખ્યા વ્યવહાર શેરનો એક હિસ્સો ખરીદે છે અને તે શેરનો એક શેર વેચે છે.

અમારું કાર્ય નીચેના નિયંત્રણો હેઠળ મહત્તમ નફો શોધવાનું છે:

  1. જો આપણે પહેલાનો સ્ટોક વેચ્યો ન હોય તો અમે નવો સ્ટોક ખરીદી શકતા નથી. તે એક સમયે અમારી પાસે એક સ્ટોક હોઈ શકે છે.
  2. આપણે જોઈએ તેટલા વ્યવહાર કરી શકીએ છીએ.

ઉદાહરણ

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

સમજૂતી: મહત્તમ નફો જે મેળવી શકાય છે તે 7 છે. વ્યવહારની વિગત નીચે મુજબ છે:

પ્રથમ દિવસ: બાકીના

બીજો દિવસ: ખરીદો

ત્રીજો દિવસ: વેચો

ચોથો દિવસ: ખરીદો

પાંચમો દિવસ: વેચો

છઠ્ઠા દિવસ: આરામ

સ્ટોક II લીટકોડ સોલ્યુશનને ખરીદવા અને વેચવા માટેનો શ્રેષ્ઠ સમયનો અભિગમ

કારણ કે આપણી પાસે ટ્રાંઝેક્શનની સંખ્યા પર કોઈ નિયંત્રણો નથી તેથી અમે એનો વિચાર કરીશું લોભી અલ્ગોરિધમનો અહીં. તેથી દર વખતે અમે ઓછામાં ઓછા ભાવે સ્ટોક ખરીદીશું અને તેને મહત્તમ કિંમતે વેચીશું. અમે તેનો સારાંશ આપી શકીએ છીએ, દરેક મિનિમા પર અમે સ્ટોક ખરીદીશું અને દરેક મેક્સિમા પર, અમે સ્ટોક વેચીશું. આ નીચે આપેલા આંકડામાં સમજાવવામાં આવ્યું છે. તે શેરના ભાવ અને દિવસો વચ્ચેનો પ્લોટ છે. સ્ટોક II ને ખરીદવા અને વેચવાનો શ્રેષ્ઠ સમયનો લેટકોડ સોલ્યુશન

જો આપણે નિરીક્ષણ કરીએ છીએ કે જ્યારે નાના કિંમતો મિનિમામાં ઉમેરવામાં આવે છે ત્યારે મેક્સિમા રચાય છે. તેથી મહત્તમ નફાની ગણતરી કરવા માટે દરેક મિનિમા અને મેક્સિમાને ટ્રckingક કરવા છતાં, અમે સીધા જ તે મૂલ્યોને આપણા નફામાં ઉમેરી શકીએ છીએ જેના માટે અમને સકારાત્મક slાળ મળી છે જે કિંમતો છે [i]> કિંમતો [i-1]. આવા બધા મૂલ્યોનો ઉમેરો અમને મહત્તમ નફો આપશે.

સ્ટોક II ને ખરીદવા અને વેચવાનો શ્રેષ્ઠ સમયનો લેટકોડ સોલ્યુશન

અમલીકરણ

સ્ટોક II ખરીદવા અને વેચવાનો શ્રેષ્ઠ સમય માટે સી ++ કોડ

#include <bits/stdc++.h> 
using namespace std; 
    int maxProfit(vector<int>& prices) {
        int n=prices.size();
        int ans = 0;
        for (int i = 1; i < n; i++) {
            if (prices[i] > prices[i - 1])
                ans += prices[i] - prices[i - 1];
        }
        return ans;
    }
int main() 
{ 
 vector<int> arr = { 7,1,5,3,6,4 }; 
 cout<<maxProfit(arr)<<endl; 
 return 0;
}
7

સ્ટોક ખરીદવા અને વેચવાનો શ્રેષ્ઠ સમય માટેનો જાવા કોડ II

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

સ્ટોક II લીટકોડ સોલ્યુશન ખરીદવા અને વેચવાના શ્રેષ્ઠ સમયનું જટિલતા વિશ્લેષણ

સમયની જટિલતા

ઉપરોક્ત કોડની સમય જટિલતા છે ઓ (એન) કારણ કે અમે ફક્ત એક જ વાર ભાવના એરેને વટાવીએ છીએ. અહીં n એ એરેની લંબાઈ છે.

જગ્યાની જટિલતા

ઉપરોક્ત કોડની અવકાશ જટિલતા છે ઓ (1) કારણ કે આપણે ફક્ત જવાબ સ્ટોર કરવા માટે મેમરીનો ઉપયોગ કરીએ છીએ.

સંદર્ભ