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.
Analysis:
DP problem. Similiar to Unique Path I.
Solution:
1 public class Solution { 2 public int uniquePathsWithObstacles(int[][] obstacleGrid) { 3 int[][] grid = obstacleGrid; 4 int xLen = grid.length; 5 if (xLen==0) return 0; 6 int yLen = grid[0].length; 7 if (yLen==0) return 0; 8 9 int[] path = new int[yLen]; 10 if (grid[0][0]==1) 11 return 0; 12 else path[0] = 1; 13 for (int i=1;i<yLen;i++) 14 if (grid[0][i]==1) path[i]=0; 15 else path[i] = path[i-1]; 16 17 for (int i=1;i<xLen;i++){ 18 if (grid[i][0]==1) path[0] = 0; 19 for (int j=1;j<yLen;j++) 20 if (grid[i][j]==1) path[j] = 0; 21 else path[j] = path[j-1]+path[j]; 22 } 23 return path[yLen-1]; 24 25 } 26 }