题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

思路和算法

从左向右迭代,一个数一个数加过去,如果 sum < 0,则重新开始找子序列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function (nums) {
let sum = 0
let ans = nums[0]

for (num of nums) {
sum += num
ans = Math.max(sum, ans)
if (sum < 0) {
sum = 0
}
}
return ans
};