思路
由于它添加了障碍,因此我们需要将有障碍的路径置为0,从而避开路障。
注意点
- 将障碍的位置置为0
- 我们需要考虑到边界也可能被堵塞的情况,不能直接设置 d[i][0],d[0][j] 为1
- 要想到 dp[0][0] 和 dp[m - 1][n - 1] 被堵死的情况
class Solution {public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {if(obstacleGrid.empty() || obstacleGrid[0].empty()) return 0;int m = obstacleGrid.size();int n = obstacleGrid[0].size();vector<vector<int>> dp(m, vector<int>(n, 0));for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {if(obstacleGrid[i][j] == 1) dp[i][j] = 0;else {if(i == 0 && j == 0) dp[i][j] = 1;else if(i == 0) dp[i][j] = dp[i][j - 1];else if(j == 0) dp[i][j] = dp[i - 1][j];else dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}}return dp[m - 1][n - 1];}};
