指定滑动窗口大小,求最大和

90 阅读1分钟

指定滑动窗口大小,求最大和

例如

// 滑动窗口 size = 3
[2,3,4,2,6,2,5,1] 
// 2 + 3 + 4 9
// 3,4,2 9
// 4,2,6 12
// 2,6,2 10
// 6,2,5 13
// 2,5,1 8
// 最大值是 13
  1. 先求出从 0 下标到 size - 1 小标的和
  2. 循环遍历 滑动窗口 sum -= num[i - 1] sum += num[i + size - 1]
  3. 进行最大值比较 max 即可

function maxInWindows(num, size) {
  
  // write code here
  let sum = getSum(num, size);
  let max = sum;

  for (let i = 1; i <= num.length - size; i++) {
    sum -= num[i - 1];
    sum += num[i + size - 1];
    if (sum > max) {
      max = sum;
    }
  }
  return max;
}
function getSum(num, size) {
  let sum = 0;
  while (size !== 0) {
    size--;
    sum += num[size];
  }
  return sum;
}