二维区域和检索-矩阵不可变
力扣 304. 二维区域和检索 - 矩阵不可变
题目说明
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。
上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。
- 你可以假设矩阵不可变。
- 会多次调用 sumRegion 方法。
- 你可以假设 row1 ≤ row2 且 col1 ≤ col2。
示例
例1
1 | 给定 matrix = [ |
笔者理解
此题是一道数组算法问题,在力扣题库中被定义为中等题。
解法
当笔者阅读完此题后,发现此题和昨天的每日一题有点相通之处,首先题目中提到sumRegion 方法会多次调用,所有我们不能每计算一次就去原数组中运算一次,我们用一个数组来存储各个位置左上角矩阵各元素的累加和,然后在调用sumRegion 方法时直接给出结果即可,此题需要注意sum数组元素的计算以及sumRegion 方法计算取得位置是否正确,让我们来看看具体如何实现的吧。
实现
1 | class NumMatrix { |
时间和空间效率都还行,可见此解法还比较适合此题;
总结
本题是今天的每日一题,难度是为中等,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!








