# Leetcode 304. Range Sum Query 2D — Immutable

1. Calculate the sum of the elements of `matrix` inside the rectangle defined by its upper left corner `(row1, col1)` and lower right corner `(row2, col2)`.
• `NumMatrix(int[][] matrix)` Initializes the object with the integer matrix `matrix`.
• `int sumRegion(int row1, int col1, int row2, int col2)` Returns the sum of the elements of `matrix` inside the rectangle defined by its upper left corner `(row1, col1)` and lower right corner `(row2, col2)`.
`Input["NumMatrix", "sumRegion", "sumRegion", "sumRegion"][[[[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]], [2, 1, 4, 3], [1, 1, 2, 2], [1, 2, 2, 4]]Output[null, 8, 11, 12]ExplanationNumMatrix numMatrix = new NumMatrix([[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]);numMatrix.sumRegion(2, 1, 4, 3); // return 8 (i.e sum of the red rectangle)numMatrix.sumRegion(1, 1, 2, 2); // return 11 (i.e sum of the green rectangle)numMatrix.sumRegion(1, 2, 2, 4); // return 12 (i.e sum of the blue rectangle)`
• `m == matrix.length`
• `n == matrix[i].length`
• `1 <= m, n <= 200`
• `-105 <= matrix[i][j] <= 105`
• `0 <= row1 <= row2 < m`
• `0 <= col1 <= col2 < n`
• At most `104` calls will be made to `sumRegion`.
1. create a 2D array structure for matrix
2. sum up all the input range
3. need to repeat every count when function call — slow
4. better way is to use DP to make this function more efficient
1. store every points location

--

--

## More from Gary Chiang

CS new grad, 6 years experience related to supply chain management. Located in Bay area

Love podcasts or audiobooks? Learn on the go with our new app.

## Gary Chiang

CS new grad, 6 years experience related to supply chain management. Located in Bay area