解题思路
- 只有一个值的话,直接返回
- 假设最大值是第一个,累加值是否大于零,如果小于零相加会变小直接取下一个值,不取累加值
- 累加值与当前假设的最大值进行比较,两者取最大值即可
代码
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function (nums) {
if(nums.length === 1) return nums[0]
let max = nums[0]
let sumIToJ = nums[0]
let len = nums.length
for(let i = 1; i < len; i++) {
sumIToJ = sumIToJ > 0 ? sumIToJ + nums[i] : nums[i]
max = sumIToJ > max ? sumIToJ : max
}
return max
};