3月——303。リージョンと検索-配列不変(304)

 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月の初日は比較的簡単です

    • 暴力法。タイムアウトはありませんが、明らかに非常に非効率的です

    • プレフィックスの合計、初期化中にプレフィックスの合計を計算してから、プレフィックスの合計を使用して単純な減算操作を実行します。これはより効率的です。

おすすめ

転載: blog.csdn.net/weixin_37724529/article/details/114257625
おすすめ