/** * Your NumMatrix object will be instantiated and called as such: * NumMatrix obj = new NumMatrix(matrix); * int param_1 = obj.sumRegion(row1,col1,row2,col2); */
DP(做padding,简单写法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classNumMatrix{ privateint[][] dp;
publicNumMatrix(int[][] matrix){ if (matrix.length == 0 || matrix[0].length == 0) return; dp = newint[matrix.length + 1][matrix[0].length + 1]; for (int r = 0; r < matrix.length; r++) { for (int c = 0; c < matrix[0].length; c++) { dp[r + 1][c + 1] = dp[r + 1][c] + dp[r][c + 1] + matrix[r][c] - dp[r][c]; } } }
publicintsumRegion(int row1, int col1, int row2, int col2){ return dp[row2 + 1][col2 + 1] - dp[row1][col2 + 1] - dp[row2 + 1][col1] + dp[row1][col1]; } }