1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
   | import java.util.ArrayList;
  public class NumMatrix {   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    int[][] matrix;   public NumMatrix(int[][] matrix) {     int n = matrix.length;     int m = matrix[0].length;
      if (matrix == null || matrix.length == 0){       return ;     }     this.matrix = new int[n][m];     for(int i=0; i<n; i++){       for (int j=0; j<m; j++){         if (i==0 && j==0){           this.matrix[i][j] = matrix[i][j];         }         else if (i == 0){           this.matrix[i][j] = matrix[i][j] + this.matrix[i][j-1];         }         else if (j == 0){           this.matrix[i][j] = matrix[i][j] + this.matrix[i-1][j];         }         else{           this.matrix[i][j] = matrix[i][j] + this.matrix[i-1][j] + this.matrix[i][j-1] - this.matrix[i-1][j-1];         }       }     }
    }   public int sumRegion(int row1, int col1, int row2, int col2) {     if (col1 == 0 && row1 == 0){       return matrix[row2][col2];     }     else if (col1 == 0){       return matrix[row2][col2] - matrix[row1-1][col2];     }     else if (row1 == 0){       return matrix[row2][col2] - matrix[row2][col1-1];     }     else       return matrix[row2][col2] - matrix[row2][col1-1] - matrix[row1-1][col2] + matrix[row1-1][col1-1];   } }
   |