කොටස් II ලීට්කෝඩ් විසඳුම මිලදී ගැනීමට සහ විකිණීමට හොඳම කාලය


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ඇමේසන් ඩී ෂෝ ෆේස්බුක් මයික්රොසොෆ්ට් මෝර්ගන් ස්ටැන්ලි Uber
අරා කෑදරකම

ගැටළු ප්රකාශය

“කොටස් II මිලදී ගැනීමට හා විකිණීමට හොඳම කාලය” යන ගැටලුවේදී, අරාවෙහි සෑම අංගයක්ම එදින දී ලබා දුන් තොගයේ මිල අඩංගු වන අරාවක් අපට ලබා දී ඇත.

අර්ථ දැක්වීම ගනුදෙනුව යනු කොටස් වලින් එක් කොටසක් මිලට ගැනීම සහ එම කොටස් වලින් එකක් විකිණීමයි.

අපගේ කාර්යය වන්නේ පහත සඳහන් සීමාවන් යටතේ උපරිම ලාභය සොයා ගැනීමයි:

  1. අපි කලින් තොගය විකුණා නොමැතිනම් අපට නව තොගයක් මිලදී ගත නොහැක. එය අපට එක් තොගයක්වත් තිබිය හැකි අවස්ථාවකි.
  2. අපට අවශ්‍ය තරම් ගනුදෙනු කළ හැකිය.

උදාහරණයක්

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

පැහැදිලි කිරීම: ලබා ගත හැකි උපරිම ලාභය 7. ගනුදෙනු විස්තරය පහත දැක්වේ:

පළමු දිනය: විවේකය

දෙවන දිනය: මිලදී ගන්න

තෙවන දිනය: විකුණන්න

හතරවන දිනය: මිලදී ගන්න

පස්වන දිනය: විකුණන්න

හයවන දිනය: විවේකය

කොටස් II ලීට්කෝඩ් විසඳුම මිලදී ගැනීමට සහ විකිණීමට හොඳම කාලය සඳහා ප්‍රවේශය

ගනුදෙනු ගණන සම්බන්ධයෙන් අපට කිසිදු සීමාවක් නොමැති බැවින් අපි ඒ ගැන සිතමු කෑදර ඇල්ගොරිතම මෙහි. එබැවින් සෑම අවස්ථාවකදීම අපි තොගයක් අවම මිලකට මිල දී ගෙන උපරිම මිලකට විකුණන්නෙමු. සෑම මිනිමයකදීම අපි තොගයක් මිලට ගන්නා අතර සෑම උපරිමයකදීම අපි තොගයක් විකුණන්නෙමු. පහත රූපයේ දැක්වෙන්නේ මෙයයි. එය කොටස් මිල සහ දින අතර කුමන්ත්‍රණයකි. කොටස් 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 ලීට්කෝඩ් විසඳුම මිලදී ගැනීමට සහ විකිණීමට හොඳම කාලය පිළිබඳ සංකීර්ණ විශ්ලේෂණය

කාල සංකීර්ණත්වය

ඉහත කේතයේ කාල සංකීර්ණතාව වේ සාමාන්ය (n) මොකද අපි මිල පරාසය හරහා ගමන් කරන්නේ එක් වරක් පමණයි. මෙන්න n යනු මිල අරාවෙහි දිග වේ.

අවකාශයේ සංකීර්ණතාව

ඉහත කේතයේ අවකාශය සංකීර්ණ වේ ඕ (1) මොකද අපි මතකය පාවිච්චි කරන්නේ උත්තරය ගබඩා කරන්න විතරයි.

ආශ්රිත