剑指 Offer 42. 连续子数组的最大和

这道题的链接: 剑指 Offer 42. 连续子数组的最大和
这种方法用的很巧,如果当前位置的数组和前一个数组加起来比加零大,那么就加起来,然后和已经存在的最大值比较,我们从头到尾扫描下来,使用变量存在的最大值就知道是多少了。代码如下:

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