1次元行列プレフィックス合計
class NumArray:
def __init__(self, nums: List[int]):
if not nums:
return
self.nums = nums
self.dp = [0]*(len(nums)+1)
#前缀和
for i in range(0,len(nums)):
self.dp[i+1] = self.dp[i]+self.nums[i]
def sumRange(self, i: int, j: int) -> int:
return self.dp[j+1]-self.dp[i]
# Your NumArray object will be instantiated and called as such:
# obj = NumArray(nums)
# param_1 = obj.sumRange(i,j)
2次元行列の接頭辞の合計
class NumMatrix:
def __init__(self, matrix: List[List[int]]):
if not matrix:
return
self.matrix = matrix
self.dp = [[0]*(len(matrix[0])+1) for _ in range(len(matrix)+1)]
row,col = len(matrix),len(matrix[0])
for i in range(row):
for j in range(col):
self.dp[i+1][j+1] = self.dp[i][j+1]+self.dp[i+1][j]+self.matrix[i][j]-self.dp[i][j]
def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:
return self.dp[row2+1][col2+1]-self.dp[row2+1][col1]-self.dp[row1][col2+1]+self.dp[row1][col1]
# Your NumMatrix object will be instantiated and called as such:
# obj = NumMatrix(matrix)
# param_1 = obj.sumRegion(row1,col1,row2,col2)
-
3月の初日は比較的簡単です
-
暴力法。タイムアウトはありませんが、明らかに非常に非効率的です
-
プレフィックスの合計、初期化中にプレフィックスの合計を計算してから、プレフィックスの合計を使用して単純な減算操作を実行します。これはより効率的です。
-