wordpress 怎么修改主题/seo入门培训班
问题描述:这里写链接内容
问题分析:
这道题与上题相似,稍微麻烦一点,就是每个点的值为以(0,0)为左上角,以该点为右下角的全部和。
当计算(row1,col1)到(row2,col2)时,就是计算newMatrix[row2][col2] - newMatrix[row2-1][col1] - newMatrix[row1][col2-1] + newMatrix[row1-1][col1-1].
为了代码方便,不放添加一个空的行和一列,这样就不用判断是否越界了。
代码如下:
public class NumMatrix {int[][] sumMatrix;int row;int col;boolean noVal = false;public NumMatrix(int[][] matrix) {this.row = matrix.length;if(row == 0){noVal = true;return;}this.col = matrix[0].length;if(col == 0){noVal = true;return;}sumMatrix = new int[row+1][col+1];for(int i = 0;i<row+1;i++)sumMatrix[i][0] = 0;for(int i = 0;i<col+1;i++)sumMatrix[0][i] = 0;//init otherfor(int i = 1;i<row+1;i++){for(int j = 1;j<col+1;j++){sumMatrix[i][j] = sumMatrix[i-1][j]+sumMatrix[i][j-1]-sumMatrix[i-1][j-1] + matrix[i-1][j-1];}}}public int sumRegion(int row1, int col1, int row2, int col2) {if(noVal)return 0;return sumMatrix[row2+1][col2+1] - sumMatrix[row2+1][col1] - sumMatrix[row1][col2+1] + sumMatrix[row1][col1];}
}// Your NumMatrix object will be instantiated and called as such:
// NumMatrix numMatrix = new NumMatrix(matrix);
// numMatrix.sumRegion(0, 1, 2, 3);
// numMatrix.sumRegion(1, 2, 3, 4);