LeetCode(304)Range Sum Query 2D - Immutable
2015-12-04 14:22
399 查看
题目
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.
分析
思想与上一题相同。注意下标处理方式。
AC代码
class NumMatrix { public: NumMatrix(vector<vector<int>> &matrix) { if (matrix.empty()) return; //求得二维矩阵的行列 int m = matrix.size(), n = matrix[0].size(); sums = vector<vector<int>>(m+1, vector<int>(n+1, 0)); sums[0][0] = matrix[0][0]; for (int j = 1; j <= n; ++j) { sums[0][j] = 0; } for (int i = 1; i <= m; ++i) { sums[i][0] = 0; } // for (int i = 1; i <= m; ++i) { for (int j = 1; j <= n; ++j) { sums[i][j] = sums[i][j - 1] + sums[i - 1][j] - sums[i - 1][j - 1] + matrix[i-1][j-1]; }//for }//for } int sumRegion(int row1, int col1, int row2, int col2) { //求得二维矩阵的行列 int m = sums.size(), n = sums[0].size(); if (row1 < 0 || row1 >= m || col1 < 0 || col1 >= n || row2<0 || row2 >= m || col2<0 || col2 >= n || row1 >row2 || col1 > col2) { return 0; } return sums[row2+1][col2+1] - sums[row2+1][col1] - sums[row1][col2+1] + sums[row1][col1]; } private: vector<vector<int>> sums; };
GitHub测试程序源码
相关文章推荐
- easyui-slider
- IOS 高斯模糊 (毛玻璃效果 UIVisualEffect)
- String的substring和subSequence的区别
- 关于uitableview上面的一块空白的问题
- django的request对象和response对象
- easyui--datetiembox日期组件
- iOS开发-UI控件:关于使用UISearchDisplayController
- [APUE]再读之 标准IO库
- easyui--timespinner时间微调组件
- 解决Value '0000-00-00 ' can not be represented as java.sql.Timest
- easyui--spinner
- spoj375 Query on a tree(树链剖分 边权 入门题)
- [MSSQL]在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
- 键盘(UITextInputTraits)
- Ⅰ.15 如何修改Squish函数
- easyui--datebox
- UESTC 764 失落的圣诞节 直接or线段树orRMQ
- iOS UIViewController 无法关闭自动旋屏(自动旋转、手动旋转、兼容IOS6之前系统)
- LeetCode(303)Range Sum Query - Immutable
- LeetCode(303)Range Sum Query - Immutable