题目:
思路:前缀和。
正常情况下,如果数组里全是正数,按着顺序一直累加,那肯定是越来越大的。但是数组里出现了负数,这个时候就要考虑一下,加上这个负数,和是更大了还是更小了?如果更小了干嘛还要加它!我自己一个不好吗。 所以每次累加的时候和当前数本身对比,哪个更大前缀和就记录哪个。
class Solution {
public int maxSubArray(int[] nums) {
int sum=0;
int max=Integer.MIN_VALUE;
for(int i=0;i<nums.length;i++){
int num=nums[i];
sum = Math.max(sum + num, num);//sum+num,将当前数组加入
max=Math.max(sum, max);//更新max值
}
return max;
}
}