LeetCode 308. 二维区域和检索 - 可变(前缀和)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给你一个 2D 矩阵 matrix,请计算出从左上角 (row1, col1) 到右下角 (row2, col2) 组成的矩形中所有元素的和。
上述粉色矩形框内的,该矩形由左上角 (row1, col1) = (2, 1) 和右下角 (row2, col2) = (4, 3) 确定。其中,所包括的元素总和 sum = 8。
示例:
给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[4, 1, 0, 1, 7],[1, 0, 3, 0, 5]
]
sumRegion(2, 1, 4, 3) -> 8
update(3, 2, 2)
sumRegion(2, 1, 4, 3) -> 10注意:
矩阵 matrix 的值只能通过 update 函数来进行修改
你可以默认 update 函数和 sumRegion 函数的调用次数是均匀分布的
你可以默认 row1 ≤ row2,col1 ≤ col2
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/range-sum-query-2d-mutable
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 类似题目:LeetCode 304. 二维区域和检索 - 矩阵不可变(DP)
- 二维树状数组可以更高效,树状数组默写不来
- 用行的前缀和做,时间复杂度O(n)
class NumMatrix {vector<vector<int>> mat;vector<vector<int>> rowpresum;
public:NumMatrix(vector<vector<int>>& matrix) {mat = matrix;rowpresum = matrix;for(int i = 0, j; i < matrix.size(); ++i){for(j = 1; j < matrix[0].size(); ++j)rowpresum[i][j] = rowpresum[i][j-1] + matrix[i][j];}}void update(int row, int col, int val) {mat[row][col] = val;rowpresum[row][col] = (col > 0 ? rowpresum[row][col-1] : 0) + val;for(int j = col+1; j < mat[0].size(); ++j)rowpresum[row][j] = rowpresum[row][j-1] + mat[row][j];}int sumRegion(int row1, int col1, int row2, int col2) {int sum = 0;for(int i = row1; i <= row2; ++i){sum += rowpresum[i][col2] - (col1==0 ? 0 : rowpresum[i][col1-1]);}return sum;}
};
28 ms 12.2 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 308. 二维区域和检索 - 可变(前缀和)相关推荐
- LeetCode 304. 二维区域和检索 - 矩阵不可变(DP)
1. 题目 2. 解题 类似题目:LeetCode 308. 二维区域和检索 - 可变(前缀和) dp[i][j]数组表示 从左上角到i,j位置的所有和 sum[i+1][j+1]=sum[i+1][ ...
- leetcode 304. 二维区域和检索 - 矩阵不可变(前缀和)
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) . 上图子矩阵左上角 (row1, col1) = (2, 1) , ...
- LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)
题目描述 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 上图子矩阵左上角 (row1, col1) = (2, ...
- 力扣刷题笔记--304 二维区域和检索 - 矩阵不可变 前缀和
304 二维区域和检索 - 矩阵不可变 作者:AC_OIer 链接:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solu ...
- [力扣] 304. 二维区域和检索 - 矩阵不可变
[力扣] 304. 二维区域和检索 - 矩阵不可变 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 动态规划 求子 ...
- 304. 二维区域和检索 - 矩阵不可变
链接:304. 二维区域和检索 - 矩阵不可变 题解:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solution/er ...
- 【二维前缀和】304. 二维区域和检索 - 矩阵不可变
目录 题目 前缀和解法(二维) 二维vector 定义 这道题是「303. 区域和检索 - 数组不可变」的进阶,第 303 题是在一维数组中做区域和检索,这道题是在二维矩阵中做区域和检索. 题目 30 ...
- leetcode 304. Range Sum Query 2D - Immutable |304. 二维区域和检索 - 矩阵不可变(二维前缀和问题)
题目 https://leetcode.com/problems/range-sum-query-2d-immutable/ 题解 本题是 medium 难度,二维前缀和问题.相似题目有: Easy: ...
- leetcode304. 二维区域和检索 - 矩阵不可变
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 上图子矩阵左上角 (row1, col1) = (2, 1) ,右 ...
最新文章
- Android 单元测试
- 爱立信思科结盟背后:几家欢喜几家愁
- pyspark读取hdfs 二进制文件
- linux存储--共享内存机制shm(十四)
- 为什么要实施服务器虚拟化
- 阿里云人脸识别sdk
- 不同于NLP,数据驱动、机器学习无法攻克NLU,原因有三
- 数据结构与算法之排序(归纳总结三)
- java8+tomcate8仅支持TLSv1.2
- python输入月份判断季节_用户输入月份,判断这个月是哪个季节。(要求使用列表)_学小易找答案...
- php怎么打印json数据,php输出json格式数据的例子
- php pdo mysql类源码_完整示例php+pdo实现的购物车类
- matlab的special函数用法
- 《网络工程师教程(第五版)》大纲及与第四版比较
- 高校学生竞赛信息管理系统介绍
- 武汉大学计算机学院 田海院长,玄跻峰 - 教师简历 CV- 武汉大学计算机学院
- origin画已知函数曲线_20+实用origin技能,带你用技巧画出完美曲线!
- 关于手机传感器,你需要了解的一些(一)
- web网页设计实例作业 ——中国茶文化(6页) 茶文化网页制作作业_中国化(网页设计...
- 新型的Hbb项目目录结构