这题是用动态规划算法来求解矩形区域内的和的问题。解题方法在于下面4张图,看懂了,自然就会了。
class NumMatrix(object):
def __init__(self, matrix):
"""
initialize your data structure here.
:type matrix: List[List[int]]
"""
if matrix == []:
self.matrix = []
else:
for i in xrange(len(matrix)):
matrix[i].append(0)
matrix.append([0] * len(matrix[0]))
for i in range(len(matrix))[::-1]:
for j in range(len(matrix[0]) - 1)[::-1]:
matrix[i][j] += matrix[i][j+1]
for j in range(len(matrix[0]))[::-1]:
for i in range(len(matrix) - 1)[::-1]:
matrix[i][j] += matrix[i+1][j]
self.matrix = matrix
def sumRegion(self, row1, col1, row2, col2):
"""
sum of elements matrix[(row1,col1)..(row2,col2)], inclusive.
:type row1: int
:type col1: int
:type row2: int
:type col2: int
:rtype: int
"""
if self.matrix == []:
return 0
return self.matrix[row1][col1] - self.matrix[row1][col2+1] - self.matrix[row2+1][col1] + self.matrix[row2+1][col2+1]