题目描述
知识点
动态规划
结果
实现
码前思考
- 这道题比原始版增加了一个条件——如果当前位置是obstacle,那么直接设置独立路径数为0。如果不是的话,跟原始版一样了。
- 注意边界值dp[0][0]的初始化。
代码实现
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
//获取长度
int n = obstacleGrid.size();
int m = obstacleGrid[0].size();
//创建dp数组
vector<vector<long long>> dp(n,vector<long long>(m,0));
//初始化
dp[0][0] = obstacleGrid[0][0] == 1 ? 0 : 1;
for(int j=1;j<m;j++){
if(obstacleGrid[0][j] == 1){
dp[0][j] = 0;
}else{
dp[0][j] = dp[0][j-1];
}
}
for(int i=1;i<n;i++){
if(obstacleGrid[i][0] == 1){
dp[i][0] = 0;
}else{
dp[i][0] = dp[i-1][0];
}
}
//进行dp
for(int i=1;i<n;++i){
for(int j=1;j<m;++j){
dp[i][j] = obstacleGrid[i][j] == 1 ? 0 : (dp[i-1][j]+dp[i][j-1]);
}
}
return dp[n-1][m-1];
}
};
码后反思
- 加油💪