当前位置:网站首页>2022.04.23(LC_714_买卖股票的最佳时机含手续费)

2022.04.23(LC_714_买卖股票的最佳时机含手续费)

2022-04-23 18:51:00 Leeli9316

 方法:贪心

class Solution {
    public int maxProfit(int[] prices, int fee) {
        int profit = 0;
        //buy表示在最大化收益的前提下,拥有一支股票的最低买入价格
        int buy = prices[0] + fee;
        for (int i = 1; i < prices.length; i++) {
            //如果当前的股票价格加上手续费小于buy
            //说明可以以更低的价格买入,更新buy
            if (prices[i] + fee < buy) {
                buy = prices[i] + fee;
            //如果当前的股票价格大于buy,可以获得收益
            //但实际上,此时卖出股票可能并不是全局最优的(例如下一天股票价格继续上升)
            } else if (prices[i] > buy) {
                profit += prices[i] - buy;
                //所以将buy更新为prices[i],如果下一天股票价格继续上升,
                //会获得prices[i+1]−prices[i]的收益,加上这一天prices[i]−buy 的收益,
                //恰好就等于在这一天不进行任何操作,而在下一天卖出股票的收益
                buy = prices[i];
            }
        }
        return profit;
    }
}

版权声明
本文为[Leeli9316]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Leeli9316/article/details/124361451