void NumMatrix(vector<vector<int>>& matrix) { //matrix为原矩阵
int m = matrix.size() , n = matrix[0].size();
vector<vector<int>> preSum(m + 1, vector<int>(n + 1));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
preSum[i + 1][j + 1] = preSum[i][j + 1] + preSum[i + 1][j] - preSum[i][j] + matrix[i][j];
}
}
}
int find_NumMatrix(vector<vector<int>>& preSum , int row1 , int col1 , int row2 , int col2) {
return preSum[row2 + 1][col2 + 1] - preSum[row1][col2 + 1] - preSum[row2 + 1][col1] + preSum[row1][col1];
}
//最好把preSum数组建立全局 , 不需要反复传参
二维前缀和模板
最新推荐文章于 2024-04-28 22:28:58 发布