LeetCode(304)Range Sum Query 2D - Immutable
来源:互联网 发布:网络运营商劫持 编辑:程序博客网 时间:2024/05/17 00:16
题目
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测试程序源码
0 0
- LeetCode(304)Range Sum Query 2D - Immutable
- [Leetcode]Range Sum Query 2D - Immutable
- Leetcode Range Sum Query 2D - Immutable
- LeetCode Range Sum Query 2D - Immutable
- [Leetcode]Range Sum Query 2D - Immutable
- Leetcode Range Sum Query 2D - Immutable
- Leetcode: Range Sum Query 2D - Immutable
- Leetcode: Range Sum Query 2D - Immutable
- leetcode:Range Sum Query 2D - Immutable
- LeetCode|Range Sum Query 2D - Immutable
- 【Leetcode】Range Sum Query 2D - Immutable
- [Leetcode] Range Sum Query 2D - Immutable
- [LeetCode]Range Sum Query 2D - Immutable
- LeetCode -- Range Sum Query 2D - Immutable
- [leetcode-304]Range Sum Query 2D - Immutable(java)
- [leetcode-304]Range Sum Query 2D - Immutable
- leetcode 304 : Range Sum Query 2D - Immutable
- leetcode(304) Range Sum Query 2D - Immutable
- iOS之单例类两种实现
- iOS des加解密 base64输出
- Linux进程实时IO监控iotop命令
- lombok的使用和原理
- 16.4 一个 DIB 位图库的实现
- LeetCode(304)Range Sum Query 2D - Immutable
- 归并排序与分治算法详解
- PHP中date函数月和日带0问题
- 文本框的常用编辑操作
- epoll多线程
- 运行中输入程序名即可打开程序
- cookie.setPath()的用法
- Spring hibernate配置中mappingLocations、mappingDirectoryLocations与mappingJarLocations 区别
- Ubuntu下修改环境变量的三种方法