1
# Runtime: 3180 ms (Top 18.96%) | Memory: 24.7 MB (Top 69.46%)
2

3

4
class NumMatrix:
5

6
def __init__(self, matrix: List[List[int]]):
7
m, n = len(matrix), len(matrix[0])
8
# Understand why we need to create a new matrix with extra one row/column
9
self.sum = [[0 for row in range(n + 1)] for column in range(m + 1)]
10
for r in range(1, m + 1):
11
for c in range(1, n + 1):
12
self.sum[r][c] = (
13
self.sum[r - 1][c]
14
+ self.sum[r][c - 1]
15
- self.sum[r - 1][c - 1]
16
+ matrix[r - 1][c - 1]
17
)
18

19
def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:
20
r1, c1, r2, c2 = row1 + 1, col1 + 1, row2 + 1, col2 + 1
21
return (
22
self.sum[r2][c2]
23
- self.sum[r1 - 1][c2]
24
- self.sum[r2][c1 - 1]
25
+ self.sum[r1 - 1][c1 - 1]
26
)
27

28

29
# Your NumMatrix object will be instantiated and called as such:
30
# obj = NumMatrix(matrix)
31
# param_1 = obj.sumRegion(row1,col1,row2,col2)

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0