Unique Paths II
2017-11-29 21:59
323 查看
原题:
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
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
The total number of unique paths is
Note: m and n will be at most 100.
返回从给定数组左上点走到右下点路径数。其中二维数组值为1的是障碍,不能走。
思考过程:
还是动态规划的思路。其中把障碍点的路径数设为1.边界点的路径数是沿着边界它前一个点的路径数。
AC代码:
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int n = obstacleGrid.length,m = obstacleGrid[0].length;
if (obstacleGrid[n-1][m-1] == 1 || obstacleGrid[0][0] == 1) return 0;//起点或终点有障碍的,路径数是0
int[][] matrix = new int
[m];
for (int i = 0;i < n;i++)
for (int j = 0;j < m;j++){
int x = 0;
if (i == 0 && j == 0)
x = 1;//起点路径数设为1)
else if (obstacleGrid[i][j] == 1)
x = 0;//障碍处路径数设为0
else if (i == 0) x = matrix[i][j-1];//边界点的路径数等于沿着边界前一个点的路径数
else if (j == 0) x = matrix[i-1][j];
else x = matrix[i - 1][j] + matrix[i][j - 1];
matrix[i][j] = x;
}
return matrix[n - 1][m - 1];
}
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
1and
0respectively 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.
返回从给定数组左上点走到右下点路径数。其中二维数组值为1的是障碍,不能走。
思考过程:
还是动态规划的思路。其中把障碍点的路径数设为1.边界点的路径数是沿着边界它前一个点的路径数。
AC代码:
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int n = obstacleGrid.length,m = obstacleGrid[0].length;
if (obstacleGrid[n-1][m-1] == 1 || obstacleGrid[0][0] == 1) return 0;//起点或终点有障碍的,路径数是0
int[][] matrix = new int
[m];
for (int i = 0;i < n;i++)
for (int j = 0;j < m;j++){
int x = 0;
if (i == 0 && j == 0)
x = 1;//起点路径数设为1)
else if (obstacleGrid[i][j] == 1)
x = 0;//障碍处路径数设为0
else if (i == 0) x = matrix[i][j-1];//边界点的路径数等于沿着边界前一个点的路径数
else if (j == 0) x = matrix[i-1][j];
else x = matrix[i - 1][j] + matrix[i][j - 1];
matrix[i][j] = x;
}
return matrix[n - 1][m - 1];
}
相关文章推荐
- LeetCode063 Unique Paths II
- Unique Paths II
- 63. Unique Paths II
- leetcode JAVA Unique Paths II 难度系数3 3.21
- Leetcode-Unique Paths&Unique PathsII
- 【Leetcode】【Medium】Unique Paths II
- Unique Paths I & II
- 63. Unique Paths II
- lintcode unique-paths-ii 不同的路径ii
- LeetCode | Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- Leetcode 63:Unique Paths II
- Unique Paths II
- 63 Unique Paths II (dp)
- leetcode:Unique Paths II
- leetcode — unique-paths-ii
- [leetcode] Unique Paths II
- leetcode Unique Paths & Unique Paths II & Minimum Path Sum
- 63. Unique Paths II