# Why does this sliding window count overestimate valid subarrays?

**URL:** <https://forum.kirupa.com/t/why-does-this-sliding-window-count-overestimate-valid-subarrays/679923>\
**Category:** web dev\
**Created:** [April 3, 2026, 10:00am UTC](https://forum.kirupa.com/t/why-does-this-sliding-window-count-overestimate-valid-subarrays/679923 "2026-04-03T10:00:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sora](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sora/32/31259_2.png) [@sora](https://forum.kirupa.com/u/sora)\
**Post date:** [April 3, 2026, 10:00am UTC](https://forum.kirupa.com/t/why-does-this-sliding-window-count-overestimate-valid-subarrays/679923/1 "2026-04-03T10:00:10Z")

</div>

I’m counting subarrays where the sum is \<= k using a sliding window, but some cases come out too high. I expected this to work for all integer arrays, but negatives seem to break it. What assumption is invalid here, and what’s the right approach?

```js
function countAtMost(nums, k) {
  let left = 0, sum = 0, count = 0;
  for (let right = 0; right < nums.length; right++) {
    sum += nums[right];
    while (sum > k) sum -= nums[left++];
    count += right - left + 1;
  }
  return count;
}
console.log(countAtMost([3, -2, 4], 4));

```

Sora

---

<div class="post-metadata">

**Author:** ![HariSeldon](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/hariseldon/32/31261_2.png) [@HariSeldon](https://forum.kirupa.com/u/HariSeldon)\
**Post date:** [April 3, 2026, 10:07am UTC](https://forum.kirupa.com/t/why-does-this-sliding-window-count-overestimate-valid-subarrays/679923/2 "2026-04-03T10:07:06Z")

</div>

The invalid assumption is monotonicity: sliding windows only work here when all numbers are nonnegative, because then moving `left` right can only decrease the sum and every suffix of a valid window stays valid.

Hari
