Range Sum Query 2D - Immutable
class NumMatrix:
def __init__(self, matrix: List[List[int]]):
nR = len(matrix)
nC = len(matrix[0])
m = [[0] * (1 + nC) for _ in range(1 + nR)]
for rx in range(1, 1 + nR, 1):
for cx in range(1, 1 + nC, 1):
tsum = m[rx - 1][cx]
lsum = m[rx][cx - 1]
tl = m[rx - 1][cx - 1]
m[rx][cx] = matrix[rx - 1][cx - 1] + tsum + lsum - tl
self.m = m
def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:
tsum = self.m[row1][1 + col2]
lsum = self.m[1 + row2][col1]
tl = self.m[row1][col1]
return self.m[1 + row2][1 + col2] - tsum - lsum + tl