您的位置:首页 > 产品设计 > UI/UE

Range Sum Query 2D - Immutable

2016-06-21 12:35 369 查看

c++

class NumMatrix {
public:
NumMatrix(vector<vector<int>> &matrix) {
if (matrix.empty())
return;
cum = matrix;
for (int i = 0; i < cum.size(); ++i) {
for (int j = 0; j < cum[i].size(); ++j) {
if (i == 0 && j == 0) {
cum[i][j] = cum[i][j]; continue;
}
if (i == 0) {
cum[i][j] = cum[i][j] + cum[i][j - 1]; continue;
}
if (j == 0) {
cum[i][j] = cum[i][j] + cum[i - 1][j]; continue;
}
cum[i][j] = cum[i][j] + cum[i][j - 1] + cum[i - 1][j] - cum[i - 1][j - 1];
}
}
}

int sumRegion(int row1, int col1, int row2, int col2) {
if (cum.empty()) return 0;
if (row1 == 0 && col1 == 0) return cum[row2][col2];
if (row1 == 0) return cum[row2][col2] - cum[row2][col1 - 1];
if (col1 == 0) return cum[row2][col2] - cum[row1 - 1][col2];
return cum[row2][col2] - cum[row2][col1 - 1] - cum[row1 - 1][col2] + cum[row1 - 1][col1 - 1];
}
private:
vector<vector<int>> cum;
};


reference:

http://blog.sina.com.cn/s/blog_4cb0b54301017wwo.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言