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.
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
}