LeetCode-53. 最大子序和

乐云一
  • 刷题日记
  • LeetCode
About 231 wordsLess than 1 minute

示例

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

思路

子数组和最大值,连续,所以联想到动态规划。 动态规划则意味着需要找到数组的滚动规律。 -2,1 。数组移动到这,如果设置初始最大值为[0]-2的话,-2+1=1 > -2 ,则最大值更新为1。 -2,1,-3 。到这,当滚动添加-3的时候,1 -3 =-2<1,则最大值为1。-2, 1,-3的子数组和为-2.

-2,1,-3,4。到这,当滚动添加4的时候,4>前子数组的和,所以最大值为4。 ...

代码

    public int maxSubArray(int[] nums) {
        int pre = 0, maxAns = nums[0];
        for (int x : nums) {
            pre = Math.max(pre + x, x);
            maxAns = Math.max(maxAns, pre);
        }
        return maxAns;
    }
Last update:
Contributors: leyunone
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.14.7