基本思想:
贪心算法
具体实现:
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; } }