let 121. Best Time to Buy and Sell Stock

主题思想: 直觉应该是到dp问题,不应该是O(n^2)的解法,所以寻找方法进行转化,最后发现如果计算每天的差值,就可以转化为求差值数组的连续最大子数组问题,因此问题得解。

AC 代码:

class Solution {
    public int maxProfit(int[] prices) {

        if(prices==null||prices.length==0) return 0;
        int [] diff=new int [prices.length-1];
        for(int i=1;i<prices.length;i++){
            diff[i-1]=prices[i]-prices[i-1];
        }
        int sum=0;
        int mx=0;
        for(int i=0;i<diff.length;i++){
            if(sum<0){
                sum=diff[i];
            }else{
                sum+=diff[i];
            }
            if(sum>mx)mx=sum;
        }
        return mx;
    }
}

猜你喜欢

转载自blog.csdn.net/the_conquer_zzy/article/details/79533698
今日推荐