பங்கு II லீட்கோட் தீர்வை வாங்க மற்றும் விற்க சிறந்த நேரம்


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது அமேசான் டி.இ ஷா பேஸ்புக் மைக்ரோசாப்ட் மோர்கன் ஸ்டான்லி கிழித்து
அணி பேராசை

சிக்கல் அறிக்கை

“பங்கு II ஐ வாங்கவும் விற்கவும் சிறந்த நேரம்” என்ற சிக்கலில், வரிசையில் உள்ள ஒவ்வொரு உறுப்புக்கும் அந்த நாளில் கொடுக்கப்பட்ட பங்குகளின் விலையைக் கொண்டிருக்கும் ஒரு வரிசை எங்களுக்கு வழங்கப்படுகிறது.

இன் வரையறை பரிவர்த்தனை ஒரு பங்கை வாங்கி, அந்த ஒரு பங்கை விற்கிறது.

பின்வரும் கட்டுப்பாடுகளின் கீழ் அதிகபட்ச லாபத்தைக் கண்டறிவது எங்கள் பணி:

  1. முந்தைய பங்குகளை விற்காவிட்டால் புதிய பங்குகளை வாங்க முடியாது. ஒரு நேரத்தில் நாம் ஒரு பங்கை வைத்திருக்க முடியும்.
  2. நாம் விரும்பும் அளவுக்கு பரிவர்த்தனைகளை செய்யலாம்.

உதாரணமாக

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

விளக்கம்: பெறக்கூடிய அதிகபட்ச லாபம் 7. பரிவர்த்தனை விவரம் பின்வருமாறு:

முதல் நாள்: ஓய்வு

இரண்டாவது நாள்: வாங்க

மூன்றாம் நாள்: விற்க

நான்காவது நாள்: வாங்க

ஐந்தாவது நாள்: விற்க

ஆறாவது நாள்: ஓய்வு

பங்கு II லீட்கோட் தீர்வை வாங்க மற்றும் விற்க சிறந்த நேரத்திற்கான அணுகுமுறை

பரிவர்த்தனைகளின் எண்ணிக்கையில் எங்களுக்கு எந்த கட்டுப்பாடுகளும் இல்லை என்பதால், நாம் ஒரு பற்றி நினைப்போம் பேராசை வழிமுறை இங்கே. எனவே ஒவ்வொரு முறையும் ஒரு பங்கை குறைந்தபட்ச விலையில் வாங்கி அதிகபட்ச விலைக்கு விற்பனை செய்வோம். ஒவ்வொரு மினிமாவிலும் நாம் ஒரு பங்கை வாங்குவோம், ஒவ்வொரு அதிகபட்சத்திலும், ஒரு பங்கை விற்பனை செய்வோம் என்று சுருக்கமாகக் கூறலாம். இது கீழே கொடுக்கப்பட்டுள்ள படத்தில் விளக்கப்பட்டுள்ளது. இது பங்கு விலைக்கும் நாட்களுக்கும் இடையிலான சதி. பங்கு II ஐ வாங்க மற்றும் விற்க சிறந்த நேரத்திற்கான லீட்கோட் தீர்வு

மினிமாவில் சிறிய மதிப்புகள் சேர்க்கப்படும்போது ஒரு மாக்சிமா உருவாகிறது என்பதைக் கவனித்தால் அதை எளிதாக்கலாம். ஆகவே, அதிகபட்ச இலாபத்தைக் கணக்கிட ஒவ்வொரு மினிமா மற்றும் மாக்சிமாவையும் கண்காணித்தாலும், அந்த மதிப்புகளை எங்கள் லாபத்தில் நேரடியாகச் சேர்க்கலாம், அதற்காக விலைகள் [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) ஏனென்றால் நாங்கள் ஒரு முறை மட்டுமே விலை வரிசையை கடந்து செல்கிறோம். இங்கே n என்பது விலை வரிசையின் நீளம்.

விண்வெளி சிக்கலானது

மேலே உள்ள குறியீட்டின் இட சிக்கலானது ஓ (1) ஏனென்றால் பதிலை சேமிக்க மட்டுமே நினைவகத்தைப் பயன்படுத்துகிறோம்.

குறிப்புகள்