https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/
描述:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
每个元素只有两个选择,要么加入前面元素的连续子数组,要么以自己为起点组成连续子数组。在这个遍历的过程中,保存最大值即可。
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let res = nums[0];
let max = res;
for(let i = 1; i < nums.length; i++) {
res = Math.max(res + nums[i], nums[i]);
if (res > max) {
max = res;
}
}
return max;
};
代码是O(n)的时间复杂度和O(1)的空间复杂度