leetcode_1314
Solutions
class Solution {
public:
vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int K) {
int m = mat.size(); if (!m) return {};
int n = mat[0].size();
vector<vector<int>> sum(m + 1, vector<int>(n + 1));
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
sum[i + 1][j + 1] = mat[i][j] + sum[i][j + 1]
+ sum[i + 1][j] - sum[i][j];
vector<vector<int>> res(m, vector<int>(n));
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) {
int r1 = max(0, i - K);
int r2 = min(m, i + K + 1);
int c1 = max(0, j - K);
int c2 = min(n, j + K + 1);
res[i][j] = sum[r2][c2] - sum[r1][c2] - sum[r2][c1] + sum[r1][c1];
}
return res;
}
};Last updated