Explore Library
Code Quiz

Sliding Window Max Subarray Bug

Spot the subtle initialization bug in a fixed-size sliding window sum.

Codejavascript
function maxSubarraySum(arr, k) {
  let maxSum = 0;
  let windowSum = 0;
  for (let i = 0; i < arr.length; i++) {
    windowSum += arr[i];
    if (i >= k) {
      windowSum -= arr[i - k];
    }
    if (i >= k - 1) {
      maxSum = Math.max(maxSum, windowSum);
    }
  }
  return maxSum;
}

// maxSubarraySum([-3, -1, -4, -2], 2) => expected -4, returns 0

What is the bug that makes this return the wrong answer for arrays of all negative numbers?