53、最大子序和

基本思想:

贪心算法

具体实现:

1.遍历nums,用count累积子序和

2.count加上nums[i]以后,count变为负数的话

从nums[i+1]开始从0累积count

3.result记录最大子序和

代码:

class Solution {
    public int maxSubArray(int[] nums) {
        if (nums.length == 1){
            return nums[0];
        }
        //自动拆箱
        int result = Integer.MIN_VALUE;//int类型的最小值的常量可取的值为-2^31
        int count = 0;
        for (int i = 0; i < nums.length; i++){
            count += nums[i];
            // 取区间累计的最大值(相当于不断确定最大子序终止位置)
            result = Math.max(result, count);
            //// 相当于重置最大子序起始位置,因为遇到负数一定是拉低总和
            if (count < 0){
                count = 0;
            }
        }
        return result;
    }
}