Prefix Sum
DSA · Arrays & Stringssyntax
Build a cumulative sum array so any range sum can be computed in O(1).
prefix[i] = sum of arr[0..i-1]
Range sum [l..r] = prefix[r+1] - prefix[l]example
// JavaScript
function buildPrefix(arr) {
const prefix = [0];
for (const val of arr) {
prefix.push(prefix[prefix.length - 1] + val);
}
return prefix;
}
function rangeSum(prefix, left, right) {
return prefix[right + 1] - prefix[left];
}
# Python
def build_prefix(arr):
prefix = [0]
for val in arr:
prefix.append(prefix[-1] + val)
return prefix
def range_sum(prefix, left, right):
return prefix[right + 1] - prefix[left]output
arr=[3,1,4,1,5] → prefix=[0,3,4,8,9,14]
rangeSum(1,3) = prefix[4]-prefix[1] = 9-3 = 6Note Build: O(n) time, O(n) space. Query: O(1). Extremely useful when you need many range sum queries. Variant: prefix XOR for range XOR problems. For 2D grids, use 2D prefix sums with inclusion-exclusion.