거래 수수료 Leetcode 솔루션으로 주식을 사고 팔기 가장 좋은시기

난이도 중급
자주 묻는 질문 아마존
알고리즘 배열 코딩 동적 프로그래밍 탐욕스러운 인터뷰 인터뷰 준비 리트코드 LeetCodeSolutions조회수 24

문제 설명

"거래 수수료가있는 주식을 사고 팔기 가장 좋은 시간"문제에서 우리는 배열의 각 요소에 그날 주어진 주식의 가격이 포함 된 배열이 제공됩니다.

정의 거래 주식 XNUMX 주를 사고 그 주식 XNUMX 주를 매도하는 것입니다.

우리의 임무는 다음 제한 사항에서 최대 이익을 찾는 것입니다.

  1. 이전 주식을 팔지 않았다면 새로운 주식을 살 수 없습니다. 한 번에 최대 하나의 주식을 가질 수 있습니다.
  2. 우리는 여러 거래를 할 수 있습니다.
  3. 거래를 할 때마다 거래 수수료를 지불해야합니다.
  4. 한 번에 하나 이상의 주식을 구입할 수 없습니다.

prices = [1, 3, 2, 8, 4, 9], fee=2
8

설명 : 얻을 수있는 최대 이익은 8입니다. 다음은 거래 세부 사항입니다.

거래 수수료 Leetcode 솔루션으로 주식을 사고 팔기 가장 좋은시기

거래 수수료 Leetcode 솔루션을 통한 주식 매매 최적기 접근 방식

이 문제를 해결하기 위해 우리는 주식을 사고 파는 방식으로 수익을 극대화 할 수있는 방법을 생각해야합니다. 최대 수익을 올리는 방법은 다음과 같습니다.

  1. 우리는 주식을 최저 가격으로 사고 최고 가격으로 판매 할 것입니다.
  2. 매 거래마다 수수료를 지불해야하므로 매도 가격> 원가 + 수수료 일 때만 주식을 매도합니다.
  3. 베스트셀러 가격을 찾음에도 불구하고 우리는 판매 가격> 원가 + 수수료를 만나게 될 때 주식을 매도 할 것입니다. 그러면 원가가 원가가됩니다.

실시

거래 수수료로 주식을 매매하기 가장 좋은 시간을위한 C ++ 코드

//function to find maximum profit
#include <bits/stdc++.h> 
using namespace std; 
    int Profit(vector<int>& prices, int fee) {
        int n = prices.size();
        int ans = 0;
        int mn = prices[0];
        for(int i=0;i<n;i++)
        {
         if (prices[i] < mn)
                mn = prices[i];
         if(prices[i] > mn + fee)
         {
              ans += prices[i] - fee - mn;
              mn = prices[i] - fee;
         }
            
        }
           return ans;  
    }

int main() 
{ 
 vector<int> arr = {1, 3, 2, 8, 4, 9}; 
 int fee=2;
 cout<<Profit(arr,fee)<<endl; 
 return 0;
}
8

거래 수수료로 주식을 매매하기 가장 좋은시기를위한 자바 코드

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

거래 수수료 Leetcode 솔루션으로 주식 매매 최적기의 복잡성 분석

시간 복잡성

위 코드의 시간 복잡성은 O (N) 가격 배열을 한 번만 탐색하기 때문입니다. 여기서 n은 가격 배열의 길이입니다.

공간 복잡성

O (1) 답을 저장하기 위해서만 메모리를 사용하기 때문입니다.

참조

코멘트를 남겨

Translate »