63. 不同路径 II
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths-ii/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
示例:
[[0,0,0,0,0,0,0,0],[1,0,0,1,0,0,0,0],[0,0,0,0,0,1,0,0]]
初始化:
推倒后:
注意初始化。二维数组先初始化为0,第一行第一列遇到障碍前设置为1。因为遇到障碍后没有路径可以走。
除了第一行第一列的其余部分,在没有障碍时候操作,有障碍时跳过不操作。
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m = obstacleGrid.size();
int n = obstacleGrid[0].size();
vector<vector<int>> dp(m, vector<int>(n , 0));
for(int i = 0; i < m && obstacleGrid[i][0] == 0; i++){
dp[i][0] = 1;
}
for(int j = 0; j < n && obstacleGrid[0][j] == 0; j++){
dp[0][j] = 1;
}
for(int i = 1; i < m; i++){
for(int j = 1; j < n; j++){
if(obstacleGrid[i][j] == 0){
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
}
return dp[m - 1][n - 1];
}
};