AlgoPrecision

Hashing Visualizer

Hash Tables

Watch keys map into buckets with modulo hashing, collisions, chain traversal, and live average versus worst-case complexity.

O(n)
map: prefix sum -> countactive key: 18
Bucket 0
key0count 1
Bucket 1
empty
Bucket 2
empty
Bucket 3
empty
Bucket 4
empty
Bucket 5
empty
Bucket 6
empty

Time

O(n)

Space

O(n)

Step Note

Start with prefix sum 0. Count subarrays with sum 18.

Details
function subarraySum(values: number[], k: number) {
  const prefixCounts = new Map<number, number>([[0, 1]])
  let prefix = 0
  let matches = 0
  for (const value of values) {
    prefix += value
    matches += prefixCounts.get(prefix - k) ?? 0
    prefixCounts.set(prefix, (prefixCounts.get(prefix) ?? 0) + 1)
  }
  return matches
}