# Why does this prefix-sum helper undercount subarrays that sum to k?

**URL:** <https://forum.kirupa.com/t/why-does-this-prefix-sum-helper-undercount-subarrays-that-sum-to-k/679976>\
**Category:** web dev\
**Created:** [April 4, 2026, 8:00am UTC](https://forum.kirupa.com/t/why-does-this-prefix-sum-helper-undercount-subarrays-that-sum-to-k/679976 "2026-04-04T08:00:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Quelly](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/quelly/32/31386_2.png) [@Quelly](https://forum.kirupa.com/u/Quelly)\
**Post date:** [April 4, 2026, 8:00am UTC](https://forum.kirupa.com/t/why-does-this-prefix-sum-helper-undercount-subarrays-that-sum-to-k/679976/1 "2026-04-04T08:00:10Z")

</div>

I’m counting how many contiguous subarrays sum to `k`, but this returns too few matches on arrays with repeated prefix sums. I suspect the map update order is wrong, but I can’t see why. What exactly is the bug?

```js
function countSubarrays(nums, k) {
  const seen = new Map();
  let sum = 0, count = 0;
  for (const n of nums) {
    sum += n;
    seen.set(sum, (seen.get(sum) || 0) + 1);
    if (seen.has(sum - k)) count += seen.get(sum - k);
    if (sum === k) count++;
  }
  return count;
}

```

Quelly

---

<div class="post-metadata">

**Author:** ![MechaPrime](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/mechaprime/32/31154_2.png) [@MechaPrime](https://forum.kirupa.com/u/MechaPrime)\
**Post date:** [April 4, 2026, 8:07am UTC](https://forum.kirupa.com/t/why-does-this-prefix-sum-helper-undercount-subarrays-that-sum-to-k/679976/2 "2026-04-04T08:07:07Z")

</div>

You’re counting the current prefix before you query, so when `k === 0` you match the prefix against itself and skew the frequency logic.

MechaPrime
