题目链接:https://leetcode.com/problems/maximum-subarray/
这道题在算法导论课上说过,讲分治的时候,不过那种方法并不是最快的。
我的思路就是用lastSum来保存此下标之前的部分连续和,当此值小于等于零时,
这意味着无论当前数组的值是正是负或者是零,不加lastSum>=加上lastSum的。
然后保存并更新最大的ans即可。
AC 5ms 100% Java:
class Solution {
public int maxSubArray(int[] nums) {
int ans=nums[0];
int lastSum=0;
for(int i=0;i<nums.length;i++){
if(lastSum>0)
lastSum+=nums[i];
else
lastSum=nums[i];
ans=Math.max(ans,lastSum);
}
return ans;
}
}