数组中连续N个数和的最大值
let arr = [1,2,3,4];
function sum(arr) {
return arr.reduce((p,c) => p + c)
}
function getMax(arr, n) {
let maxArr = [];
for(let left = 0, right = n; right <= arr.length; left++,right++) {
let max = sum(arr.slice(left, right));
maxArr.push(max)
}
return Math.max(...maxArr)
}
getMax(arr,2)
纯算法实现
let arr = [1,3,4,5,1,2,9,2];
function getMax(arr, n) {
let max = 0,
sum = 0;
for(let i = 0; i < arr.length -n; i++){
if(i === 0){
for(let j = 0; j < n; j++) {
max += arr[j]
}
sum = max
} else {
sum = sum - arr[i - 1] + arr[i - 1 + n];
if(sum > max){
max = sum;
}
}
}
return max
}