Data Structures19 sections · 729 units
Open in Course

2D Sparse Table

Rectangle min/max queries

For 2D range minimum queries on a matrix: Precompute st[r][c][i][j]\text{st}[r][c][i][j] = minimum in rectangle starting at (r,c)(r, c) with dimensions 2i×2j2^i \times 2^j. Query rectangle (r1,c1,r2,c2)(r_1, c_1, r_2, c_2):

1.1. Find kr=log2(r2r1+1)k_r = \log_2(r_2 - r_1 + 1), kc=log2(c2c1+1)k_c = \log_2(c_2 - c_1 + 1)

2.2. Combine four overlapping rectangles Space: O(nmlognlogm)O(nm \log n \log m). Preprocessing: O(nmlognlogm)O(nm \log n \log m). Query: O(1)O(1). This is useful for problems like "find minimum in any subrectangle" with many queries on a static matrix.