714. 거래 수수료로 주식을 사고 팔기 가장 좋은 시간(자바스크립트 솔루션)

2829 단어 algorithmsjavascript

설명:



price[i]가 i번째 날의 주어진 주식 가격인 배열 가격과 거래 수수료를 나타내는 정수 수수료가 제공됩니다.

달성할 수 있는 최대 이익을 찾으십시오. 원하는 만큼 거래를 완료할 수 있지만 각 거래에 대해 거래 수수료를 지불해야 합니다.

참고: 동시에 여러 거래에 참여할 수 없습니다(즉, 다시 구매하기 전에 주식을 팔아야 함).

해결책:



시간 복잡도 : O(n)
공간 복잡도: O(1)

var maxProfit = function(prices, fee) {
        // The max profit we could make
        let profit = 0;
        // Total profit if we bought at the current price
        let hold = -prices[0];
        // Loop through all the days
        for (let i = 1; i < prices.length; i++) {
            // Check if it would be more profitable to hold or sell
            profit = Math.max(profit, hold + prices[i] - fee);
            // Check if it would be more profitable to hold or buy 
            hold = Math.max(hold, profit - prices[i]);
        }
        return profit;
};

좋은 웹페이지 즐겨찾기