اسٹاک II لیٹکوڈ حل خریدنے اور بیچنے کا بہترین وقت


مشکل سطح آرام سے
اکثر پوچھا جاتا ہے ایمیزون ڈی ای شا فیس بک مائیکروسافٹ مارگن سٹینلی Uber
لڑی لالچی

مسئلہ یہ بیان

"اسٹاک II کو خریدنے اور فروخت کرنے کا بہترین وقت" کے مسئلے میں ، ہمیں ایک صف فراہم کی جاتی ہے جہاں صف میں ہر عنصر اس دن دیئے گئے اسٹاک کی قیمت پر مشتمل ہوتا ہے۔

کی تعریف ٹرانزیکشن اسٹاک کا ایک حصہ خرید رہا ہے اور اسٹاک کا ایک حصہ بیچ رہا ہے۔

ہمارا کام درج ذیل پابندیوں کے تحت زیادہ سے زیادہ منافع تلاش کرنا ہے۔

  1. اگر ہم نے سابقہ ​​اسٹاک فروخت نہیں کیا ہے تو ہم نیا اسٹاک نہیں خرید سکتے ہیں۔ یہ ایک ایسے وقت میں ہے جب ہمارے پاس زیادہ سے زیادہ ایک اسٹاک ہوسکتا ہے۔
  2. ہم جتنا چاہیں لین دین کرسکتے ہیں۔

مثال کے طور پر

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

وضاحت: زیادہ سے زیادہ منافع جو حاصل کیا جاسکتا ہے 7 ہے۔ مندرجہ ذیل لین دین کی تفصیل یہ ہے:

پہلا دن: آرام

دوسرا دن: خریدیں

تیسرا دن: فروخت

چوتھا دن: خریدیں

پانچواں دن: فروخت

چھٹا دن: آرام

اسٹاک II لیٹکوڈ حل خریدنے اور بیچنے کے لئے بہترین وقت کے لئے نقطہ نظر

چونکہ ہمارے پاس لین دین کی تعداد پر کوئی پابندی نہیں ہے لہذا ہم ایک کے بارے میں سوچیں گے لالچی الگورتھم یہاں لہذا ہر بار جب ہم کم سے کم قیمت پر اسٹاک خریدیں گے اور اسے زیادہ سے زیادہ قیمت پر فروخت کریں گے۔ ہم اسے مختصرا can بیان کرسکتے ہیں ، ہر منیما پر ہم ایک اسٹاک خریدیں گے اور ہر میکسما پر ، ہم اسٹاک بیچیں گے۔ اس کی وضاحت ذیل میں دیئے گئے اعدادوشمار میں کی گئی ہے۔ یہ اسٹاک کی قیمت اور دنوں کے درمیان ایک پلاٹ ہے۔ اسٹاک II خریدنے اور فروخت کرنے کا بہترین وقت کا لیٹکوڈ حل

ہم اسے آسان بنا سکتے ہیں اگر ہم مشاہدہ کریں کہ جب منیما میں چھوٹی قدریں شامل کی جائیں تو میکسما تشکیل دیا جاتا ہے۔ لہذا زیادہ سے زیادہ منافع کا حساب لگانے کے لئے ہر منیما اور میکسما سے باخبر رہنے کے باوجود ، ہم ان اقدار کو براہ راست اپنے منافع میں شامل کرسکتے ہیں جس کے لئے ہمیں ایک مثبت ڈھلوان ملی جو قیمتوں [i]> قیمتوں [i-1] ہے۔ ایسی تمام اقدار کا اضافہ ہمیں زیادہ سے زیادہ منافع بخشے گا۔

اسٹاک II خریدنے اور فروخت کرنے کا بہترین وقت کا لیٹکوڈ حل

عمل

اسٹاک II خریدنے اور بیچنے کا بہترین وقت کیلئے C ++ کوڈ

#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 لیٹکوڈ حل خریدنے اور فروخت کرنے کے بہترین وقت کا پیچیدہ تجزیہ

وقت کی پیچیدگی

مذکورہ کوڈ کی ٹائم پیچیدگی ہے اے (ن) کیونکہ ہم صرف ایک بار قیمتوں کے صفوں کو عبور کررہے ہیں۔ یہاں ن قیمت کی صف کی لمبائی ہے۔

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

مذکورہ کوڈ کی جگہ کی پیچیدگی ہے O (1) کیونکہ ہم میموری کو صرف جواب ذخیرہ کرنے کے لئے استعمال کرتے ہیں۔

حوالہ جات