Follow up for "Unique Paths":
Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as 1
and 0
respectively in the grid.
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
[ [0,0,0], [0,1,0], [0,0,0] ]
The total number of unique paths is 2
.
Note: m and n will be at most 100.
[解题思路]
本题与上题思路差不多,直接使用DP来解,唯一区别在对obstacle的处理上,当遇到obstacle时将该位置置为0
表示该位置不可以到达[m][n]
1 public int uniquePathsWithObstacles(int[][] obstacleGrid) { 2 // Start typing your Java solution below 3 // DO NOT write main() function 4 int m = obstacleGrid.length; 5 int n = obstacleGrid[0].length; 6 int[][] steps = new int[m+2][n+2]; 7 for(int i = 0; i < m; i++){ 8 for(int j = 0; j < n; j++){ 9 steps[i][j] = 0; 10 } 11 } 12 steps[m][n+1] = 1; 13 for(int i = m; i >= 1; i--){ 14 for(int j = n; j >= 1; j--){ 15 if(obstacleGrid[i - 1][j - 1] == 1){ 16 steps[i][j] = 0; 17 continue; 18 } 19 steps[i][j] = steps[i+1][j] + steps[i][j+1]; 20 } 21 } 22 return steps[1][1]; 23 }