难度:中等。
标签:数组,动态规划。
相比上一题加点判断条件。
注意以下用例,是不能到达的。
输入:[[1]]
输出:0
正确解法:
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m = obstacleGrid.size(), n = obstacleGrid[0].size();
vector<vector<int>> result(m);
for(int i = 0 ; i < m; i++)result[i].resize(n);
if(obstacleGrid[0][0] == 0)result[0][0] = 1;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(obstacleGrid[i][j] == 0){
if(i >= 1)result[i][j] += result[i-1][j];
if(j >= 1)result[i][j] += result[i][j - 1];
}
}
}
return result[m - 1][n - 1];
}
};
结果: