给出一个整数数组nums
查找连续的子数组(至少包含一个数字)
具有最大和并返回其和。
示例:
输入:[-2,1,-3,4,-1,2,1,-5,4],
输出:6
说明:[4,-1,2,1]的总和= 6。
输入:[-1]
输出:-1
输入:[-2,-1]
输出:[-1]
我在JS中尝试的方法:
var maxSubArray = function(nums) {
result=0
negativenumber=[]
for(i=0;i<nums.length;i++){
if(nums[i]<0){
negativenumber.push(nums[i]);
}else{
result+=nums[i];
}
}
return result;
};
maxSubArray([-2,1,-3,4,-1,2,1,-5,4])//should return 6
maxSubArray([-1])//should return -1
maxSubArray([-1,-2])//should return -1
答案 0 :(得分:0)
您可以使用 Kadane的算法。
function maxSum(arr){
let a1 = 0
let a2 = arr[0]
arr.forEach((i,a) => {
a1 = Math.max(i, a1 + i)
a2 = Math.max(a2, a1)
})
return a2
}
console.log(maxSum([-2,1,-3,4,-1,2,1,-5,4]))
console.log(maxSum([-1]))
console.log(maxSum([-1,-2]))