53. Maximum Subarray(最大子序和)

题目链接: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;
    }
}

猜你喜欢

转载自blog.csdn.net/God_Mood/article/details/88033386