淘先锋技术网

首页 1 2 3 4 5 6 7

1.贪心算法

class Solution {
    public int maxSubArray(int[] nums) {
        int max=nums[0];
        for(int i=1;i<nums.length;i++){
            if(nums[i-1]>0) nums[i]+=nums[i-1];
            max=Math.max(max,nums[i]);
        }
        return max;
    }
}

终于来一个简单题了,这个题就是在每个i位置获得当前可以得到的最大值,

如果前面的数字大于0,就直接对当前num[i]进行累加,再判断与max的大小

[-2,1,-3,4,-1,2,1,-5,4]

直接对当前num[i]进行累加后,其实每个num[i]表示的就是到i结束,这个数组的最大连续子序和

这个数大于0,对于后面的数而言,才有累加的必要