同样是递推表达,但是要注意到存在障碍物,障碍物所在的位置的的方案数为0
其余做法与
Unique Paths 一样
public class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int m = obstacleGrid.length, n = obstacleGrid[0].length;
int[][] x = new int[m][n];
int i = 0, j = 0;
x[0][0] = 1;
for( i = 0; i < m; ++i){
for( j = 0; j < n ; ++j){
if(obstacleGrid[i][j] == 1){
x[i][j] = 0;
continue;
}
if(i - 1 >= 0){
x[i][j] = x[i - 1][j];
}
if(j - 1 >= 0){
x[i][j] += x[i][j - 1] ;
}
}
}
return x[m - 1][n - 1];
}
}
public class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int m = obstacleGrid.length, n = obstacleGrid[0].length;
int[][] x = new int[m][n];
int i = 0, j = 0;
x[0][0] = 1;
for( i = 0; i < m; ++i){
for( j = 0; j < n ; ++j){
if(obstacleGrid[i][j] == 1){
x[i][j] = 0;
continue;
}
if(i - 1 >= 0){
x[i][j] = x[i - 1][j];
}
if(j - 1 >= 0){
x[i][j] += x[i][j - 1] ;
}
}
}
return x[m - 1][n - 1];
}
}