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.
answer:
class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int result = 0; if(obstacleGrid.size() == 0) return result; int m = obstacleGrid.size(),n = obstacleGrid[0].size(); cout << m << endl; cout << n << endl; if(obstacleGrid[0][0] == 1) return 0; else obstacleGrid[0][0] = 1; bool flag = false; int i = 1; for(i = 1; i < n; i ++){ if(obstacleGrid[0][i] != 1) obstacleGrid[0][i] = 1; else{ flag = true; break; } } if(flag){ while(i < n){ obstacleGrid[0][i] = 0; i ++; } } flag = false; for(i = 1; i < m; i ++){ if(obstacleGrid[i][0] != 1) obstacleGrid[i][0] = 1; else{ flag = true; break; } } if(flag){ while(i < m){ obstacleGrid[i][0] = 0; i ++; } } for(int i = 1; i < m; i ++){ for(int j = 1; j < n; j ++){ int temp = obstacleGrid[i][j - 1] + obstacleGrid[i - 1][j]; if(obstacleGrid[i][j] == 1) obstacleGrid[i][j] = 0; else obstacleGrid[i][j] = temp; } } return obstacleGrid[m - 1][n - 1]; }};
新闻热点
疑难解答