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.

1 class Solution { 2 public: 3 int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { 4 int ans=0; 5 int m=obstacleGrid.size(); 6 if(!m) 7 return ans; 8 int n=obstacleGrid[0].size(); 9 10 vector<int> jlist(n,0); 11 for(int i=n-1;i>=0;i--) 12 { 13 if(obstacleGrid[m-1][i]==1) 14 break; 15 else 16 jlist[i]=1; 17 } 18 19 for(int i=m-2;i>=0;i--) 20 { 21 for(int j=n-1;j>=0;j--) 22 { 23 if(j==n-1) 24 { 25 if(obstacleGrid[i][j]==1) 26 jlist[j]=0; 27 } 28 else 29 { 30 31 if(obstacleGrid[i][j]==1) 32 jlist[j]=0; 33 else 34 jlist[j]+=jlist[j+1]; 35 36 } 37 38 39 } 40 } 41 return jlist[0]; 42 } 43 };