题目介绍

题解
前缀和+贪心
注意计算贪心的时候,遍历前缀和时要从i=1开始遍历,要是从i=0开始遍历;nums =[-1]的示例的输出为错误0
代码如下:
class Solution {
public int maxSubArray(int[] nums) {
int n = nums.length, res = Integer.MIN_VALUE;
int[] s = new int[n + 1];
for (int i = 0; i < n; i++) {
s[i + 1] = s[i] + nums[i];
}
int min = s[0];
//!!!注意要从i=1开始遍历,因为求出来的s是前缀和,如果nums全为负数,那么最大子数组和肯定小于0,如果从1开始遍历
//会出现最大值为0-0=0
for (int i = 1; i < n + 1; i++) {
res = Math.max(res, s[i] - min);
min = Math.min(min, s[i]);
}
return res;
}
}

被折叠的 条评论
为什么被折叠?



