comefrom: <awangdev>63. Unique Paths II_1.java
code: public int uniquePathsWithObstacles(int[][] obstacleGrid) {
          if (obstacleGrid == null || obstacleGrid.length == 0) return 0;
          int m = obstacleGrid.length, n = obstacleGrid[0].length;
          
          int[][] dp = new int[m][n];
          for (int i = 0, j = 0; j < n; j++) {
              if (obstacleGrid[i][j] == 1) break;
              dp[i][j] = 1;
          }
          for (int i = 0, j = 0; i < m; i++) {
              if (obstacleGrid[i][j] == 1) break;
              dp[i][j] = 1;
          }
          
          for (int i = 1; i < m; i++) {
              for (int j = 1; j < n; j++) {
                  if (obstacleGrid[i][j] == 1) continue;
                  dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
              }
          }
          return dp[m - 1][n - 1];
      }
masked: public int sample_funcname ( int [ ] [ ] var_0 ) {
    if ( var_0 == null || var_0 . length == 0 ) return 0 ;
    int var_1 = var_0 . length , var_2 = var_0 [ 0 ] . length ;
    int [ ] [ ] var_3 = new int [ var_1 ] [ var_2 ] ;
    for ( int var_4 = 0 , var_5 = 0 ;
    var_5 < var_2 ;
    var_5 ++ ) {
      if ( var_0 [ var_4 ] [ var_5 ] == 1 ) break ;
      var_3 [ var_4 ] [ var_5 ] = 1 ;
    }
    for ( int var_4 = 0 , var_5 = 0 ;
    var_4 < var_1 ;
    var_4 ++ ) {
      if ( var_0 [ var_4 ] [ var_5 ] == 1 ) break ;
      var_3 [ var_4 ] [ var_5 ] = 1 ;
    }
    for ( int var_4 = 1 ;
    var_4 < var_1 ;
    var_4 ++ ) {
      for ( int var_5 = 1 ;
      var_5 < var_2 ;
      var_5 ++ ) {
        if ( var_0 [ var_4 ] [ var_5 ] == 1 ) continue ;
        var_3 [ var_4 ] [ var_5 ] = var_3 [ var_4 - 1 ] [ var_5 ] + var_3 [ var_4 ] [ var_5 - 1 ] ;
      }
    }
    return var_3 [ var_1 - 1 ] [ var_2 - 1 ] ;
  }
  