这题是用动态规划算法来求解矩形区域内的和的问题。解题方法在于下面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]
本文介绍了一种使用动态规划算法高效求解矩形区域内元素和的方法。通过预先计算矩阵中每个位置的累加和,可以快速响应不同矩形区域求和的需求。
834

被折叠的 条评论
为什么被折叠?



