LeetCode 304. 二维区域和检索 - 矩阵不可变(DP)
1. 题目
2. 解题
类似题目:LeetCode 308. 二维区域和检索 - 可变(前缀和)
dp[i][j]数组表示 从左上角到i,j
位置的所有和
sum[i+1][j+1]=sum[i+1][j]+sum[i][j+1]+matrix[i][j]−sum[i][j]sum[i+1][j+1] = sum[i+1][j]+sum[i][j+1]+matrix[i][j]-sum[i][j]sum[i+1][j+1]=sum[i+1][j]+sum[i][j+1]+matrix[i][j]−sum[i][j]
class NumMatrix {vector<vector<int>> sum;
public:NumMatrix(vector<vector<int>>& matrix) {if(matrix.empty())return;int r = matrix.size(), c = matrix[0].size(), i, j;sum = vector<vector<int>> (r+1, vector<int>(c+1, 0));for(i = 0; i < r; i++){for(j = 0; j < c; j++){sum[i+1][j+1] = sum[i+1][j]+sum[i][j+1]+matrix[i][j]-sum[i][j];}}}int sumRegion(int row1, int col1, int row2, int col2) {if(sum.empty())return 0;return sum[row2+1][col2+1] - sum[row1][col2+1] - sum[row2+1][col1] + sum[row1][col1];}
};
or
按行dp
class NumMatrix {vector<vector<int>> sumofrows;
public:NumMatrix(vector<vector<int>>& matrix) {if(matrix.empty())return;int r = matrix.size(), c = matrix[0].size(), i, j, sum = 0;vector<int> temp(c,0);for(i = 0; i < r; i++){sum = 0;for(j = 0; j < c; j++){sum += matrix[i][j];temp[j] = sum;}sumofrows.push_back(temp);}}int sumRegion(int row1, int col1, int row2, int col2) {if(sumofrows.empty())return 0;int i, j, sum = 0;if(col1 != 0)for(i = row1; i <= row2; i++){sum += sumofrows[i][col2]-sumofrows[i][col1-1];}elsefor(i = row1; i <= row2; i++){sum += sumofrows[i][col2];}return sum;}
};/*** Your NumMatrix object will be instantiated and called as such:* NumMatrix* obj = new NumMatrix(matrix);* int param_1 = obj->sumRegion(row1,col1,row2,col2);*/
LeetCode 304. 二维区域和检索 - 矩阵不可变(DP)相关推荐
- 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) ,右 ...
- leetcode算法题--二维区域和检索 - 矩阵不可变
原题链接:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/ 1.暴力(超时) class NumMatrix {public ...
最新文章
- 【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)
- 抽象类必须要有抽象方法吗?
- spring-kafka整合:KafkaTemplate-kafka模板类介绍
- date设置时间_解决 IDEA 无法找到 java.util.Date 的问题
- 2能不用cuda_农村建房的新方法,只需要一块地,2天就建好房子,不用还能搬走...
- mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)
- Tomcat日志文件位置
- java bundle类_java ResourceBundle介绍
- 宁波计算机程序32届初赛,25届宁波市中小学计算机程序设计竞赛初赛试题
- [转] NOI, NOIP, IOI, ACM
- Altium Designer元件库下载
- redis通过hscan导入大hash key
- 商业分析的职业路线-在数据科学世界里规划你的下一个角色
- 不同麻醉方案以及清醒条件下大鼠大脑连接模式分析
- 初学java者写家庭收支账本
- 服务器CPU占用过高如何解决
- 2021-08-29
- 无约束优化:线搜索最速下降
- php条件查询,PHP-----多条件查询(示例代码)
- 如何安装 ONLYOFFICE Workspace丨安装教程丨使用教程
热门文章
- 理解C++中拷贝构造函数
- TCP的定时器系列 — 保活定时器(有图有代码有真相!!!)
- 线程的控制(创建、等待、终止)、分离线程
- java取模多位数_JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)...
- innobackupex备份工具
- 树莓派安装MySQL数据库与卸载
- 8-[函数]-嵌套函数,匿名函数,高阶函数
- luogu P1046 陶陶摘苹果
- 【VBA编程】06.控制语句
- 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)...