Loading

Quipoin Menu

Learn • Practice • Grow

data-structure-with-java / Prefix Sum Technique
tutorial

Prefix Sum Technique

Imagine you have to answer many queries asking for the sum of elements between index i and j. Doing a loop for each query would be O(n) per query. Prefix sum precomputes cumulative sums so each query becomes O(1).

Prefix sum array `prefix[i]` stores the sum of elements from index 0 to i (inclusive).

Building prefix sum


int[] arr = {3, 1, 4, 2};
int[] prefix = new int[arr.length];
prefix[0] = arr[0];
for (int i = 1; i < arr.length; i++) {
prefix[i] = prefix[i-1] + arr[i];
}
// prefix = [3, 4, 8, 10]

Sum from L to R (inclusive)
sum(L,R) = prefix[R] - prefix[L-1] (if L>0). If L=0, it's just prefix[R].


public static int rangeSum(int[] prefix, int L, int R) {
if (L == 0) return prefix[R];
return prefix[R] - prefix[L-1];
}

Applications
  • Sum queries on static arrays.
  • Equilibrium index (where sum left = sum right).
  • Subarray sum problems.
  • 2D prefix sum for matrix range sum.
Two Minute Drill
  • Prefix sum precomputes cumulative sums in O(n).
  • Range sum query becomes O(1).
  • Prefix array length = original length.
  • Formula: sum(L,R) = prefix[R] - prefix[L-1] (with L>0).
  • Useful for static arrays with many queries.

Need more clarification?

Drop us an email at career@quipoinfotech.com