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)相关推荐

  1. leetcode 304. 二维区域和检索 - 矩阵不可变(前缀和)

    给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) . 上图子矩阵左上角 (row1, col1) = (2, 1) , ...

  2. LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)

    题目描述 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 上图子矩阵左上角 (row1, col1) = (2, ...

  3. 力扣刷题笔记--304 二维区域和检索 - 矩阵不可变 前缀和

    304 二维区域和检索 - 矩阵不可变 作者:AC_OIer 链接:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solu ...

  4. [力扣] 304. 二维区域和检索 - 矩阵不可变

    [力扣] 304. 二维区域和检索 - 矩阵不可变 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 动态规划 求子 ...

  5. 304. 二维区域和检索 - 矩阵不可变

    链接:304. 二维区域和检索 - 矩阵不可变 题解:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solution/er ...

  6. 【二维前缀和】304. 二维区域和检索 - 矩阵不可变

    目录 题目 前缀和解法(二维) 二维vector 定义 这道题是「303. 区域和检索 - 数组不可变」的进阶,第 303 题是在一维数组中做区域和检索,这道题是在二维矩阵中做区域和检索. 题目 30 ...

  7. leetcode 304. Range Sum Query 2D - Immutable |304. 二维区域和检索 - 矩阵不可变(二维前缀和问题)

    题目 https://leetcode.com/problems/range-sum-query-2d-immutable/ 题解 本题是 medium 难度,二维前缀和问题.相似题目有: Easy: ...

  8. leetcode304. 二维区域和检索 - 矩阵不可变

    给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 上图子矩阵左上角 (row1, col1) = (2, 1) ,右 ...

  9. leetcode算法题--二维区域和检索 - 矩阵不可变

    原题链接:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/ 1.暴力(超时) class NumMatrix {public ...

最新文章

  1. 【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)
  2. 抽象类必须要有抽象方法吗?
  3. spring-kafka整合:KafkaTemplate-kafka模板类介绍
  4. date设置时间_解决 IDEA 无法找到 java.util.Date 的问题
  5. 2能不用cuda_农村建房的新方法,只需要一块地,2天就建好房子,不用还能搬走...
  6. mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)
  7. Tomcat日志文件位置
  8. java bundle类_java ResourceBundle介绍
  9. 宁波计算机程序32届初赛,25届宁波市中小学计算机程序设计竞赛初赛试题
  10. [转] NOI, NOIP, IOI, ACM
  11. Altium Designer元件库下载
  12. redis通过hscan导入大hash key
  13. 商业分析的职业路线-在数据科学世界里规划你的下一个角色
  14. 不同麻醉方案以及清醒条件下大鼠大脑连接模式分析
  15. 初学java者写家庭收支账本
  16. 服务器CPU占用过高如何解决
  17. 2021-08-29
  18. 无约束优化:线搜索最速下降
  19. php条件查询,PHP-----多条件查询(示例代码)
  20. 如何安装 ONLYOFFICE Workspace丨安装教程丨使用教程

热门文章

  1. 理解C++中拷贝构造函数
  2. TCP的定时器系列 — 保活定时器(有图有代码有真相!!!)
  3. 线程的控制(创建、等待、终止)、分离线程
  4. java取模多位数_JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)...
  5. innobackupex备份工具
  6. 树莓派安装MySQL数据库与卸载
  7. 8-[函数]-嵌套函数,匿名函数,高阶函数
  8. luogu P1046 陶陶摘苹果
  9. 【VBA编程】06.控制语句
  10. 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)...