题目链接:https://leetcode.com/problems/unique-paths-ii/
题目:
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.
解题思路:
这题的思路与 62 Unique Paths 大致相同。
唯一的不同在于,如果某个方格有障碍,那么记录每个方格路径数的数组 res[] 在该单元内被置为 0 。
方格左上角和右下角只要有一个为障碍,那么结果都是 0.
容易出错的测试用例:
[[0], [1]]
[[0,0], [1,0]]
代码实现:
public class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
if(obstacleGrid.length == 0 || obstacleGrid[0].length == 0 || obstacleGrid[0][0] == 1 || obstacleGrid[obstacleGrid.length - 1][obstacleGrid[0].length - 1] == 1)
return 0;
int rows = obstacleGrid.length;
int columns = obstacleGrid[0].length;
int[] res = new int[columns];
res[0] = 1;
for(int i = 0; i < rows; i ++) {
if(obstacleGrid[i][0] == 1)
res[0] = 0;
for(int j = 1; j < columns; j ++) {
if(obstacleGrid[i][j] == 0)
res[j] = res[j - 1] + res[j];
else
res[j] = 0;
}
}
return res[columns - 1];
}
}
43 / 43 test cases passed.
Status: Accepted
Runtime: 2 ms