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

作者:AC_OIer
链接:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solution/xia-ci-ru-he-zai-30-miao-nei-zuo-chu-lai-ptlo/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

思路:

二维前缀和解决的是二维矩阵中的矩形区域求和问题。

二维前缀和数组中的每一个格子记录的是「以当前位置为区域的右下角(区域左上角恒定为原数组的左上角)的区域和」

即 sum 的每个元素表示其区域和。

假设 i 和 j 为固定值 3 来理解。


如何初始化sum中的元素 , (sum 的每个元素表示其区域和);

根据上图可知,就是求 f[i][j]

因此当我们要求 (x1, y1) 作为左上角,(x2, y2) 作为右下角 的区域和的时候,可以直接利用前缀和数组快速求解:

至于求子矩阵元素和就是求 matrix[i][j];

class NumMatrix {int[][] sum;public NumMatrix(int[][] matrix) {int n = matrix.length, m = n == 0 ? 0 : matrix[0].length;// 与「一维前缀和」一样,前缀和数组下标从 1 开始,因此设定矩阵形状为 [n + 1][m + 1](模板部分)sum = new int[n + 1][m + 1];// 预处理除前缀和数组(模板部分)for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + matrix[i - 1][j - 1];}}}public int sumRegion(int x1, int y1, int x2, int y2) {// 求某一段区域和 [i, j] 的模板是 sum[x2][y2] - sum[x1 - 1][y2] - sum[x2][y1 - 1] + sum[x1 - 1][y1 - 1];(模板部分)// 但由于我们源数组下标从 0 开始,因此要在模板的基础上进行 + 1x1++; y1++; x2++; y2++;return sum[x2][y2] - sum[x1 - 1][y2] - sum[x2][y1 - 1] + sum[x1 - 1][y1 - 1];}
}

力扣刷题笔记--304 二维区域和检索 - 矩阵不可变 前缀和相关推荐

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

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

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

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

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

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

  4. LeetCode 304. 二维区域和检索 - 矩阵不可变(DP)

    1. 题目 2. 解题 类似题目:LeetCode 308. 二维区域和检索 - 可变(前缀和) dp[i][j]数组表示 从左上角到i,j位置的所有和 sum[i+1][j+1]=sum[i+1][ ...

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

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

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

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

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

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

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

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

  9. 【力扣刷题笔记(二)】特别技巧,模块突破,45道经典题目分类总结,在不断巩固中精进

    希望大家都能:简单题

最新文章

  1. 从零开始 Code Review,两年实战经验分享!
  2. 1900万印度人疯抢6万份工作,加班至死,这才是真正的就业崩溃!
  3. Learning Cocos2d-x for WP8(9)——Sprite到哪,我做主
  4. SAP Spartacus OccEndpointsService单元测试的依赖注入
  5. SAP UI5不支持delta render
  6. ubuntu-18.04 修改用户名密码
  7. kafka告警简单方案
  8. div 重新加载_JS之 加载模糊文本动画
  9. html页面代码重用-document writeln
  10. SYBASE性能优化
  11. Panabit标准版免费版功能限制
  12. 传奇客户端小地图上的文字描述修改方法
  13. Java基础每日一练—第6天:逻辑判断
  14. 华为鸿蒙主题设计,EMUI 11 UX设计一探究竟:这就是鸿蒙OS的提前预演
  15. 不入世的天才: 尼古拉·特斯拉
  16. T2-小度养小猫(贪心)
  17. 【泛微系统】OA系统集成echart插件,自定义图表demo实例
  18. Office 365组命名策略 - 补充
  19. CAN通信标准帧和扩展帧(全网最透彻解答)
  20. SPI的4种采样模式

热门文章

  1. bulldog-vulnhub
  2. 帆软:根据参数查看不同报表
  3. java jbutton 背景颜色_java – 在Windows上设置JButton背景颜色
  4. 调用百度api实现驾车路线和时间距离计算
  5. 计算机微机维修工四级理论知识试卷,计算机维修工中级理论知识试卷1.doc
  6. HBuilder教程
  7. 由于之前的错误,Context[]启动失败(SSM)
  8. C语言:统计句子中元音字母的个数
  9. Docker容器化实战第三课 dockerfile介绍、容器安全与监控讲解
  10. Leetcode刷题面试题 16.14. 最佳直线