2022-7-23 剑指offer-二维前缀和
作者:互联网
剑指 Offer II 013. 二维子矩阵的和
难度中等给定一个二维矩阵 matrix
,以下类型的多个请求:
- 计算其子矩形范围内元素的总和,该子矩阵的左上角为
(row1, col1)
,右下角为(row2, col2)
。
实现 NumMatrix
类:
NumMatrix(int[][] matrix)
给定整数矩阵matrix
进行初始化int sumRegion(int row1, int col1, int row2, int col2)
返回左上角(row1, col1)
、右下角(row2, col2)
的子矩阵的元素总和。
1 class NumMatrix { 2 int[][] sum; 3 public NumMatrix(int[][] matrix) { 4 int m=matrix.length,n=matrix[0].length; 5 sum=new int[m+1][n+1]; 6 for (int i=1;i<=m;i++){ 7 for (int j=1;j<=n;j++){ 8 sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+matrix[i-1][j-1]; 9 //System.out.println(sum[i][j]); 10 } 11 } 12 } 13 14 public int sumRegion(int row1, int col1, int row2, int col2) { 15 return sum[row2+1][col2+1]-sum[row1][col2+1]-sum[row2+1][col1]+sum[row1][col1]; 16 } 17 } 18 19 /** 20 * Your NumMatrix object will be instantiated and called as such: 21 * NumMatrix obj = new NumMatrix(matrix); 22 * int param_1 = obj.sumRegion(row1,col1,row2,col2); 23 */
思路:二维前缀和,可以扩容一层为了计算方便。
标签:matrix,23,int,col2,offer,矩阵,col1,2022,NumMatrix 来源: https://www.cnblogs.com/benbicao/p/16511883.html