304. Range Sum Query 2D
来源:互联网 发布:sql server 字符串主键 编辑:程序博客网 时间:2024/06/06 12:56
Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).
Range Sum Query 2D
The above rectangle (with the red border) is defined by (row1, col1) = (2, 1) and (row2, col2) = (4, 3), which contains sum = 8.
Example:
Given 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
sumRegion(1, 1, 2, 2) -> 11
sumRegion(1, 2, 2, 4) -> 12
Note:
You may assume that the matrix does not change.
There are many calls to sumRegion function.
You may assume that row1 ≤ row2 and col1 ≤ col2.
解答:
要注意多加一圈,否则会过了边界
用到的原理就是
dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+matrix[i-1][j-1];
dp存的是从(0,0)到(i,j)的矩形区域的和
class NumMatrix {public: NumMatrix(vector<vector<int>> matrix) { if(matrix.empty()||matrix[0].size()==0) return; dp.resize(matrix.size()+1,vector<int>(matrix[0].size()+1,0)); for(int i=1;i<=matrix.size();i++) { for(int j=1;j<=matrix[0].size();j++) { dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+matrix[i-1][j-1]; } } } int sumRegion(int row1, int col1, int row2, int col2) { return dp[row2+1][col2+1]-dp[row1][col2+1]-dp[row2+1][col1]+dp[row1][col1]; }private: vector<vector<int>> dp;};/** * Your NumMatrix object will be instantiated and called as such: * NumMatrix obj = new NumMatrix(matrix); * int param_1 = obj.sumRegion(row1,col1,row2,col2); */
- 303+304. Range Sum Query && Range Sum Query 2D
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable**
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D
- 304. Range Sum Query 2D
- 304. Range Sum Query 2D
- 304. Range Sum Query 2D
- 304. Range Sum Query 2D
- leetcode 304. Range Sum Query 2D
- Ubuntu 16.04安装VNC
- EventBus源码解析
- Cordova中JavaScript/TypeScript调用原生代码
- 易控INSPEC软件与三菱FX系列PLC以太网通讯
- 专利法
- 304. Range Sum Query 2D
- 【JavaEE】Servlet的doGet()和doPost()方法
- 关于IE9下用按钮触发file上传控件,请求无法触发的问题
- 面向对象设计原则之依赖倒转原则
- Unity3D研究院之手游开发中所有特殊的文件夹
- Spark机器学习之协同过滤
- JavaScript 简单计算器
- XDOJ-1009-Josephus环的复仇(线段树解约瑟夫环)
- Oracle导入带中文的sql文件,报ORA-01756: 引号内的字符串没有正确结束