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,1));
//遍历
//dp[i][j]表示到当前的位置有多少路径
if (obstacleGrid[0][0] == 1) {
dp[0][0] = 0;
}
for (int i = 1; i < n; ++i) {
if (obstacleGrid[0][i] == 1) {
dp[0][i] = 0;
} else {
dp[0][i] = dp[0][i - 1];
}
}
for (int i = 1; i < m; ++i) {
if (obstacleGrid[i][0] == 1) {
dp[i][0] = 0;
} else {
dp[i][0] = dp[i - 1][0];
}
}
for (int i = 1; i < m; ++ i) {
for (int j = 1; j < n; ++j) {
if (obstacleGrid[i][j] == 1) {
dp[i][j] = 0;
} else {
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
}
return dp[m-1][n-1];
}
};
Leetcode 63. 不同路径 II
最新推荐文章于 2024-07-12 18:12:33 发布