304. Range Sum Query 2D - Immutable
304. Range Sum Query 2D - Immutable
Given a 2D matrix matrix, handle multiple queries of the following type:
Calculate the sum of the elements of
matrixinside the rectangle defined by its upper left corner(row1, col1)and lower right corner(row2, col2).
Implement the NumMatrix class:
NumMatrix(int[][] matrix)Initializes the object with the integer matrixmatrix.int sumRegion(int row1, int col1, int row2, int col2)Returns the sum of the elements ofmatrixinside the rectangle defined by its upper left corner(row1, col1)and lower right corner(row2, col2).
Constraints:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 200-105 <= matrix[i][j] <= 1050 <= row1 <= row2 < m0 <= col1 <= col2 < nAt most
104calls will be made tosumRegion.
My Solutions:

Note that the region Sum(OA) is covered twice by both Sum(OB) and Sum(OC).
Sum(ABCD) = Sum(OD) - Sum(OB) - Sum(OC) + Sum(OA)
Complexity analysis
Time complexity : O(1) time per sumRegion query. O(mn) time pre-computation.
Space complexity: O(mn). The algorithm uses O(mn) space to store the cumulative region sum.
Last updated