(M)Dynamic Programming:304. Range Sum Query 2D
来源:互联网 发布:a5源码被骗 编辑:程序博客网 时间:2024/05/16 05:10
这道题是受了(M)Dynamic Programming:221. Maximal Square的启发,写法一样的。建立一个二维数组dp,dp[i][j]表示(0,0)到(i,j)的矩阵之和。如果要求的正方形是(x1,y1),(x2,y2),那么要考虑dp(row1-1,col2),dp(row2, col1-1),dp(row1-1,col1-1)。
class NumMatrix {public: vector<vector<int>> dp; int m = 0; int n = 0; NumMatrix(vector<vector<int>> matrix) { if(!matrix.empty()) { m = matrix.size(); n = matrix[0].size(); for(int i = 0; i < m; ++i) { dp.push_back(vector<int>(n, 0)); } for(int i = 0; i < m; ++i) { for(int j = 0; j < n; ++j) { int up = (i - 1 < 0)?0:dp[i - 1][j]; int left = (j - 1 < 0)?0:dp[i][j - 1]; int leftup = (i - 1 >= 0 && j - 1 >= 0)?dp[i - 1][j - 1]:0; dp[i][j] = up + left - leftup + matrix[i][j]; } } } } int sumRegion(int row1, int col1, int row2, int col2) { int up = (row1 - 1 >= 0)?dp[row1 - 1][col2]:0; int left = (col1 - 1 >= 0)?dp[row2][col1 - 1]:0; int leftup = (row1 - 1 >= 0 && col1 - 1 >= 0)?dp[row1 - 1][col1 - 1]:0; return dp[row2][col2] - up - left + leftup; }};/** * Your NumMatrix object will be instantiated and called as such: * NumMatrix obj = new NumMatrix(matrix); * int param_1 = obj.sumRegion(row1,col1,row2,col2); */
阅读全文
0 0
- (M)Dynamic Programming:304. Range Sum Query 2D
- 304. Range Sum Query 2D - Immutable 【M】【27】
- Dynamic Programming:303. Range Sum Query
- 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
- 【Java基础09_3】接口
- MySQL 5.7.17 安装报错CMake Error at cmake/boost.cmake:81 (MESSAGE)
- AppCompatActivity
- 2017033000C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- 集合源码学习(二):Spliterator
- (M)Dynamic Programming:304. Range Sum Query 2D
- Word Construction hiho一下第170周
- STL(下篇)
- ucosII(一)
- MongoDB&C++开发 (六)使用bsoncxx::builder::stream和$push在数组中插入元素
- 淘宝详情页广告法检测工具 淘宝违规词检测、查询 淘宝详情页违规词检测、查询
- 如何利用js制作选项卡
- namenode 异常关闭问题查询
- 2017033001c++引用与指针的区别(着重理解)