其他分享
首页 > 其他分享> > [图解LeetCode Hot100]股票问题

[图解LeetCode Hot100]股票问题

作者:互联网

股票问题在Hot100里有两道,分有冷冻期和没冷冻期两种

代码直接上了:

public int maxProfit(int[] prices) {
          int res = 0;
        if (prices.length == 0){
            return 0;
        } 
        
        int bought = prices[0];
        for (int i=1;i<prices.length;i++) {
            if (prices[i]> bought) {
                if (res < prices[i] - bought) {
                    res = prices[i] - bought;
                }
            } else {
                bought = prices[i];//这里就是优化,如果有小于当前买入的时候直接更新买入
            }
        }
        
        return res;
    }
Sell[i] = Math.Max(Sell[i-1] , Buy[i-1]+Price)

我们再来看当天买入的话如果想获得最大利益的话,是不是最好昨天也是买入,或者昨天是冷冻期,就是前天卖出了,反正不要昨天卖出让今天变冷冻期就对了(废话!不然你今天怎么买入)

Buy[i] = Math.Max(Buy[i-1], Sell[i-2]-Price)

有了这两个方程,我们可以写出代码了

public int maxProfit(int[] prices) {
        if (prices.length == 0) {
            return 0;
        }
      
        int[] Buy = new int[prices.length + 1];
        int[] Sell = new int[prices.length + 1];

        Buy[1] = -prices[0];
        for (int i=2;i<=prices.length;i++) {
            Buy[i] = Math.max(Buy[i-1], Sell[i-2] - prices[i-1]);
            Sell[i] = Math.max(Sell[i-1], Buy[i-1] + prices[i-1]);

        }
        
        return Sell[prices.length];
    }

更多内容欢迎关注公众号「码农小鼬」,知乎同名,外企小码农分享算法、技术和职场体验,跟你一起成长~

标签:Sell,Buy,int,Hot100,买入,prices,图解,冷冻,LeetCode
来源: https://blog.csdn.net/weixin_43871843/article/details/112412228