leetcode题解记录-304二维区域和检索 - 矩阵不可变(python3)

题目

304二维区域和检索 - 矩阵不可变
题目链接
官方题解

解题思路:
在这里插入图片描述
首先生成辅助数组sum,数组中的每个位置代表(0,0)与当前坐标之间的区域和(sum数组行列数均比matrix+1,方便处理边界)。
核心思想:
(R1,C1)与(R2,C2)区域和= sum[R2+1][C2+1]-sum[R1][C2+1]-sum[R2+1][C1]+sum[R1][C1]

代码记录

class NumMatrix:
	def __init__(self, matrix: List[List[int]]):
		self.matrix=matrix
		if matrix:
			self.rows_num=len(matrix)
			self.cols_num=len(matrix[0])
			self.sum=[[0 for i in range(self.cols_num+1)] for j in range(self.rows_num+1)]
			self._compute_sum()
	def _compute_sum(self):
		for i in range(1,self.rows_num+1):
			for j in range(1,self.cols_num+1):
				self.sum[i][j]=self.sum[i][j-1]+self.sum[i-1][j]-self.sum[i-1][j-1]+self.matrix[i-1][j-1]
	def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:
		if not self.matrix:
			return 0
		else:
			return self.sum[row2+1][col2+1]-self.sum[row1][col2+1]-self.sum[row2+1][col1]+self.sum[row1][col1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值