题目描述
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
题目链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/
Java
class Solution {
public int maxSubArray(int[] nums) {
int res = nums[0];
for(int i=1; i<nums.length; ++i) {
nums[i] += Math.max(nums[i-1], 0);
res = Math.max(nums[i], res);
}
return res;
}
}
题解
动态规划:用nums[i]存储以nums[i]结尾的连续子数组的和的最大值,当nums[i - 1] <= 0时,nums[i] = nums[i],当nums[i - 1] > 0时,nums[i] = nums[i] + nums[i-1]。