بهترين وقت خريد ڪري ٿو اسٽاڪ III جي ليٽ ڪوڊ جو حل


تڪليف جي سطح سخت
بار بار پڇڻ ۾ ايڊوب Amazon
ڪيريو متحرڪ پروگرامنگ

مسئلي جو بيان

مسئلي ۾ "اسٽاڪ III خريد ڪرڻ ۽ وڪرو ڪرڻ جو بهترين وقت ،" اسان کي هڪ صف ڏني وئي آهي جتي صف ۾ هر عنصر ان ڏينهن ڏنل اسٽاڪ جي قيمت تي مشتمل آهي.

جي تعريف برو شيئر جو هڪ حصو خريد ڪري رهيو آهي ۽ شيئر ڪري رهيو آهي.

اسان جو ڪم هيٺين پابندين تحت وڌ کان وڌ منافعو ڳولڻ آهي.

  1. اسان نئون اسٽاڪ خريد نٿا ڪري سگهون جيڪڏهن اسان اڳوڻي اسٽاڪ وڪرو نه ڪيو آهي. اھو ھڪڙي وقت تي آھي اسان وٽ گھڻو ڪري ھڪڙو اسٽاڪ ٿي سگھي ٿو.
  2. اسان گهڻو ڪري ٻه ٽرانزيڪشن ڪري سگهون ٿا.

مثال

prices = [1,2,3,4,5]
4

وضاحت: وڌ کان وڌ منافعو جيڪو حاصل ڪري سگھجي ٿو 4. ھيٺ ڏنل آھي ٽرانزيڪشن جو تفصيل:

پهريون ڏينهن: خريد ڪيو

ٻيو ڏينهن: آرام

ٽيون ڏينهن: آرام

چوٿون ڏينهن: آرام

پنجون ڏينهن: وڪرو

اسٽاڪ III ليٽ ڪوڊ حل ۽ خريد ڪرڻ لاء بهترين وقت جي ويجهو

هي مسئلو هڪ سخت ترين نسخو آهي اسٽاڪ خريد ڪرڻ ۽ وڪڻڻ جو بهترين وقت. تنھنڪري ھن مسئلي ۾ ٽپو ڏيڻ کان پھريائين مسئلي جو آسان نسخو حل ڪرڻ گھرجي.

آسان نسخ جي مقابلي ۾ ، جتي اسان هتي فقط هڪ ٽرانزيڪشن ڪري سگهون ٿا ، اسان گهڻو ڪري ٻه ٽرانزيڪشن ڪري سگهون ٿا. جنهن جو مطلب آهي هڪ ٽرانسڪشن يا ٻه ٽرانزيڪشن اهڙي طريقي سان جيڪا وڌ ۾ وڌ منافعو ڏئي.

مسئلو جو ڏکيو حصو ٻيون ٽرانسڪشن کي ڪئين سنڀالڻ آهي. هن مسئلي کي آسان نسخه ۾ تبديل ڪري سگهجي ٿو ، هڪ ڀيرو هن مسئلي کي ڏسڻ جي لاءِ اسان پنهنجو نظريو تبديل ڪريون ٿا.

اچو ته چوندا آهيون اسان 200 روپيا جي منافعي سان پنهنجي پهرين ٽرانزيڪشن مڪمل ڪئي. (اهو حصو ساڳيو آهي اسٽاڪ خريد ڪرڻ ۽ وڪڻڻ جو بهترين وقت). تنهنڪري پهرين ٽرانزيڪشن کان پوءِ اسان وٽ 200 روپيا هٿ ۾ آهن.

هاڻ جڏهن اسان 500 روپين جو اسٽاڪ خريد ڪرڻ وڃون ٿا. اسان ان کي سوچيو ، جيتوڻيڪ اسٽاڪ جي قيمت 500 روپيا آهي. پر اسان لاءِ ، اهو 300 روپيا آهي ڇو ته اسان وٽ اڳ ۾ ئي 200 روپيا آهن ۽ اسان اهو مفت ۾ حاصل ڪيو. هاڻي اسان ٻئي ٽرانزيڪشن کي اهڙو ئي طريقي سان وڌائينداسين خالص منافع کي وڌ کان وڌ ايئن ئي ٿيندو جيئن اسين ڪندا هئاسين اسٽاڪ خريد ڪرڻ ۽ وڪڻڻ جو بهترين وقت مسئلو.

هن مثال مان پهچ واضح ٿيندي:

اسٽاڪ III جي خريد ۽ وڪرو ڪرڻ لاءِ بهترين وقت جي ليٽ ڪوڊ حل

تي عملدرآمد

اسٽاڪ III جي خريد ۽ فروخت لاءِ بهترين وقت لاءِ جاوا ڪوڊ

import java.util.Arrays; 
public class Tutorialcup {
    public static int maxProfit(int[] prices) {
  int firstSell = 0;
  int secondSell = 0;
  int firstBuy = Integer.MAX_VALUE;
  int secondBuy = Integer.MAX_VALUE;
  for(int i = 0; i < prices.length; i++) {
    int p = prices[i];
    firstBuy = Math.min(firstBuy, p);
    firstSell = Math.max(firstSell, p - firstBuy);
    secondBuy = Math.min(secondBuy, p - firstSell);
    secondSell = Math.max(secondSell, p - secondBuy);
  }
  
  return secondSell;
    }
  public static void main(String[] args) {
    int [] arr = {1,2,3,4,5}; 
    int ans=  maxProfit(arr);
    System.out.println(ans);
  }
}
4

اسٽاڪ III جي خريد ۽ فروخت لاءِ بهترين وقت لاءِ C ++ ڪوڊ

#include <bits/stdc++.h> 
using namespace std; 
     int maxProfit(vector<int>& prices) {
  int firstSell = 0;//stores profit after one sell
  int secondSell = 0;//stores profit after two sell
  int firstBuy = INT_MAX;
  int secondBuy = INT_MAX;
  int n=prices.size();
        for(int i=0;i<n;i++)
        {
            firstBuy=min(firstBuy,prices[i]);
            firstSell=max(firstSell,prices[i]-firstBuy);
            secondBuy=min(secondBuy,prices[i]-firstSell);
            secondSell=max(secondSell,prices[i]-secondBuy); 
        }
        return secondSell;
    }
int main() 
{ 
 vector<int> arr = { 1,2,3,4,5 }; 
 cout<<maxProfit(arr)<<endl; 
 return 0;
}
4

اسٽاڪ III ليٽ ڪوڊ حل خريد ۽ وڪرو ڪرڻ جي بهترين وقت جي پيچيدگي جو تجزيو

وقت جي پيچيدگي

مٿي ڏنل ڪوڊ جي پيچيدگي آهي اي (ن) ڇاڪاڻ ته اسان رڳو هڪ ڀيرو قيمت جي آرڊر کيڏي رهيا آهيون. هتي اين قيمت جي ڊيگهه جي ڊيگهه آهي.

خلائي پيچيدگي

مٿي ڏنل ڪوڊ جي خلائي پيچيدگي آهي اي (1) ڇاڪاڻ ته اسان جواب کي ذخيرو ڪرڻ جي لاءِ صرف ياداشت استعمال ڪندا آهيون.

حوالا