前缀和的应用
- 多开辟一点空间,跳过边界条件
- 前缀和减少重复计算
class NumMatrix:
def __init__(self, matrix: List[List[int]]):
m = len(matrix)
n = len(matrix[0])
# 以后设计前缀和开辟+1的空间
preSum = [ [0]*(n+1) for _ in range(m+1)]
for i in range(m):
for j in range(n):
preSum[i+1][j+1] = preSum[i+1][j] + preSum[i][j+1] - preSum[i][j] + matrix[i][j]
self.preSum = preSum
def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:
return self.preSum[row2 + 1][col2 + 1] - self.preSum[row2+1][col1]-self.preSum[row1][col2+1] + self.preSum[row1][col1]