LeetCode 304. Range Sum Query 2D - Immutable
来源:互联网 发布:淘宝的增高精油有用吗 编辑:程序博客网 时间:2024/05/29 17:10
#include <vector>#include <iostream>using namespace std;/* Given a 2D matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner(row2, col2). For 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*/// to preCompute the matrix, the time complexity for queries can be lowered down to O(1).class NumMatrix {private: vector< vector<int> > sumMatrix;private: void preComputeMatrix(vector< vector<int> >& matrix) { int m = matrix.size(), n = matrix[0].size(); for(int k = 1; k < m; ++k) { matrix[k][0] += matrix[k-1][0]; } for(int k = 1; k < n; ++k) { matrix[0][k] += matrix[0][k-1]; } for(int i = 1; i < m; ++i) { for(int j = 1; j < n; ++j) { matrix[i][j] += matrix[i-1][j] + matrix[i][j-1] - matrix[i-1][j-1]; } } }public: NumMatrix(vector< vector<int> >& matrix) { sumMatrix = matrix; preComputeMatrix(sumMatrix); } int sumRegion(int row1, int col1, int row2, int col2) { return sumMatrix[row2][col2] - sumMatrix[row1 - 1][col2] - sumMatrix[row2][col1 - 1] + sumMatrix[row1-1][col1-1]; }};int main(void) { vector< vector<int> > 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}}; NumMatrix sumMatrix(matrix); int tmp = sumMatrix.sumRegion(2, 1, 4, 3); int tmp_2 = sumMatrix.sumRegion(1, 1, 2, 2); int tmp_3 = sumMatrix.sumRegion(1, 2, 2, 4); cout << tmp << endl; cout << tmp_2 << endl; cout << tmp_3 << endl;}
0 0
- [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 解题报告
- [leetcode] 304. Range Sum Query 2D - Immutable
- [leetcode] 304. Range Sum Query 2D - Immutable
- leetcode 304. Range Sum Query 2D - Immutable
- 304. Range Sum Query 2D - Immutable LeetCode
- Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)
- 阿里dubbo框架使用系列:如何在分布式环境中调试接口
- 易經大意 041_060
- C++设计模式浅识策略模式
- linux centos6.5下mysql 数据库的源码安装
- LeetCode 304. Range Sum Query 2D - Immutable
- JDBC注册驱动程序三种方式
- 【华为OJ】【066-求解立方根】
- 【华为OJ】【067-求最小公倍数】
- day64 Spark SQL下Parquet的数据切分和压缩内幕详解
- day65-Spark SQL下Parquet深入进阶
- 【华为OJ】【068-购物单】
- 【华为OJ】【069-简单错误记录】
- Failed to find provider info for com.tencent.mm.sdk.plugin.provider