Unique Paths II [LeetCode]

时间:2023-03-08 18:29:25

Follow up for "Unique Paths":

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.

Solution: The same to Unique Paths, just add obstacle check.

 class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
if(obstacleGrid.size() <= || obstacleGrid[].size() <= )
return ; int row = obstacleGrid.size();
int column = obstacleGrid[].size();
vector<int> path_nums(column, );
for(int i = ; i < row; i ++) {
int row_idx = row - - i;
for(int j = ; j < column; j ++ ) {
int column_idx = column - - j;
if(i == && j == && obstacleGrid[row_idx][column_idx] == )
return ;
if(i == && j == && obstacleGrid[row_idx][column_idx] == ) {
path_nums[j] = ;
}else {
if(obstacleGrid[row_idx][column_idx] == ) {
path_nums[j] = ;
}else {
if(j != )
path_nums[j] += path_nums[j - ];
}
}
}
}
return path_nums[column - ];
}
};