Matrix Block Sum (2D Prefix Sum) Visualization & Animation
Computes block sums for every cell in a matrix using 2D prefix sums and the inclusion-exclusion formula; O(m×n).
## What is it?
Given a matrix and an integer `k`, compute a new matrix where each cell `result[i][j]` is the sum of all cells in the original matrix within the block defined by rows `[i-k, i+k]` and columns `[j-k, j+k]`.
## How it works
1. Build a 2D prefix sum matrix `prefix[i][j]` = sum of all elements in the rectangle from `(0,0)` to `(i,j)`
2. For each cell `(i,j)`, compute the block sum using the 2D prefix sum formula:
```
blockSum = prefix[r2][c2] - prefix[r1-1][c2] - prefix[r2][c1-1] + prefix[r1-1][c1-1]
```
where `r1 = max(0, i-k)`, `r2 = min(m-1, i+k)`, `c1 = max(0, j-k)`, `c2 = min(n-1, j+k)`
## When to use
- 2D range sum queries
- Image blurring / box filter operations
- Any problem computing aggregate values over rectangular windows in a matrix
## Key Points
- O(m*n) preprocessing, O(1) per query
- Inclusion-exclusion principle for 2D rectangles
- Boundary clamping (`max(0, i-k)`) handles edges where the block extends beyond the matrix
Category: algorithms
Difficulty: intermediate
Time Complexity: O(m × n)
Space Complexity: O(m × n)
View Matrix Block Sum (2D Prefix Sum) Visualization