广州网站建设推广服务,室内设计联盟官方网站下载,会展设计师资格证,西安哪家网络公司做网站给你一个 m * n 的矩阵 mat 和一个整数 K #xff0c;请你返回一个矩阵 answer #xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和#xff1a;
i - K r i K, j - K c j K (r, c) 在矩阵内。
示例 1#xff1a;
输入请你返回一个矩阵 answer 其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和
i - K r i K, j - K c j K (r, c) 在矩阵内。
示例 1
输入mat [[1,2,3],[4,5,6],[7,8,9]], K 1 输出[[12,21,16],[27,45,33],[24,39,28]]
通过计算矩阵的前缀和每一个要求计算的矩阵区域都可以通过矩阵的前缀和组合得到
代码
class Solution {public int[][] matrixBlockSum(int[][] mat, int K) {int nmat.length,mmat[0].length;int[][] dpnew int[n1][m1];int[][] resnew int[n][m];for(int i1;in;i)for(int j1;jm;j)dp[i][j]dp[i-1][j]dp[i][j-1]-dp[i-1][j-1]mat[i-1][j-1];//计算矩阵前缀和for (int i1;in;i)for(int j1;jm;j){int left Math.max(j-K-1,0);//确定边界int right Math.min(jK,m);int up Math.max(i-K-1,0);int down Math.min(n,iK);res[i-1][j-1]dp[down][right]-dp[up][right]-dp[down][left]dp[up][left];//通过前缀和的组合得出区域和}return res;}
}