Now consider if some obstacles are added to the grids. How many unique paths would there be?
An obstacle and empty space is marked as
1
and 0
respectively in the grid.For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
[ [0,0,0], [0,1,0], [0,0,0] ]The total number of unique paths is
2
.Note: m and n will be at most 100.
跟unique path 的解法类似,同样可以维护一个一维数组,只是递推公式要考虑到有障碍的情况下,path = 0;
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
//sanity check
if (obstacleGrid.size() == 0 || obstacleGrid[0].size() == 0) return 0;
vector<int> M(obstacleGrid[0].size(), 0);
M[0] = 1;
for (int i = 0; i < obstacleGrid.size(); i++) {
for (int j = 0; j < obstacleGrid[0].size(); j++) {
if (obstacleGrid[i][j] == 1) {
M[j] = 0;
} else {
if (j > 0) M[j] += M[j-1];
}
}
}
return M[obstacleGrid[0].size()-1];
}
};
No comments:
Post a Comment