方法一:
var maxSubArray = function(nums) {
// 要返回的结果,也就是最大值
let result = nums[0]
// 每次加的和
let sum = 0
// 循序全部数组
for (const item of nums) {
// 当sum > 0 时, 就可以对后面的数产生增益,所以给他加上
if(sum > 0){
sum += item
} else {
// 当sum < 0 时, 就已经没有再往后加的必要了,这个时候直接把值拿过来赋值给sum
sum = item
}
// 每次循序比较结果跟和的,取最大值
result = Math.max(sum,result)
}
return result
};
nums = [-2]
console.log(maxSubArray(nums));
方法二:
var maxSubArray = function(nums) {
let max = nums[0]
let pre = nums[0]
for(let i = 1; i < nums.length; i++){
pre = Math.max(pre + nums[i], nums[i])
max = Math.max(max, pre)
console.log('pre',pre);
console.log('max',max);
}
return max
}
nums = [-2,1,-3,4,-1,2,1,-5,4]
console.log(maxSubArray(nums));