leetcode_121——买卖股票的最好时机(java实现)

题目链接:

https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/submissions/

 

思路:使用dp,保存上一步的状态,然后递推

状态转移方程:last  = Math.max(0, last + prices[i+1] - prices[i])//意思就是算出首指针到末指针的差,如果小于0则不保存(因为题意不需要小于零的数)

然后用res = Math.max(last,res)来记录最大利润

状态转移方程原理如下图:

 

 中间数抵消以达到求出区间端点之差

 

source code:

package leetcode;

public class MaxProfit {
    /**
     * dp解法
     * @param prices
     * @return
     */
    public int maxProfit(int[] prices) {
        int last = 0;
        int res = 0;
        for(int i = 0;i<prices.length;++i){
            last = Math.max(0,last + prices[i+1] - prices[i]);
            res = Math.max(res,last);
        }
        return res;
    }
}

 

 

代码已ac

希望对大家有所帮助

以上

 

posted @ 2020-03-20 11:37  醉生梦死_0423  阅读(249)  评论(0编辑  收藏  举报