Skip to content

Prefix Sum.

Roberto Fronteddu edited this page Apr 20, 2026 · 17 revisions

Problems:

Theory

A prefix sum array stores the sum of elements up to index i.

Array Prefix Sum Formula
nums = [2, 4, 6, 8] prefix = [2, 6, 12, 20] prefix[i] = nums[0] + nums[1] + ... + nums[i]

The formula in an iterative form:

prefix[0] = nums[0];
for (int i = 1; i < n; i++)
    prefix[i] = prefix[i - 1] + nums[i];

Observations

Once you have prefix sums, you can compute any subarray sum in O(1). This converts many problems from O(n²) → O(n).

For subarray [l, r]:

  • sum(l,r) = prefix[r] - prefix[l-1]

Example:

Array Prefix Sum
nums = [2,4,6,8] prefix = [2,6,12,20] sum(1,3) = 20 - 2 = 18

Prefix sum with HashMap

Prefix can be used with HashMap when solving problems like Find number of subarrays with sum = k

Key identity:

  • prefix[j] - prefix[i] = k

Rearrange:

  • prefix[i] = prefix[j] - k

So while scanning we can count how many prefixSum == currentSum - k

Algorithm:

map[0] = 1
sum = 0

for num in nums:
    sum += num
    count += map[sum - k]
    map[sum]++

Difference Array Trick (Range Updates)

Instead of updating every element to add +5 to a range [l,r]

Use:

  • diff[l] += 5
  • diff[r+1] -= 5

Then compute prefix to apply updates. This is used in problems like Flight Bookings.

2D Prefix Sum

For matrices: Used for fast rectangle queries such as sum(x1,y1,x2,y2)

Formula:

  • P[x2][y2] - P[x1-1][y2] - P[x2][y1-1] + P[x1-1][y1-1]

Clone this wiki locally