FTPrep, 63 Unique Paths II
2017-09-11 03:08
323 查看
和上题类似 点击打开链接
但是因为加了obstacle这个条件,所以要改的地方 要搞对,也必须在特别了解 version I 的基础之上。
1,第一列在version I中永远是1,所以不需要改变;但在version II 中,可能改变的,如果出现了障碍,那就是0
2,其他的点,如果有障碍,同样的,就是0了;不是的话就是 转移公式;
3,为了一开始让record[0]=1,就要确定这个assign的条件成立,也就是第一个格子,必须不是障碍,如果是障碍也可以直接 return 0了,因为走不通。
代码如下:
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
if(obstacleGrid.length==0 || obstacleGrid[0].length==0) return 0;
if(obstacleGrid[0][0]==1) return 0; // this is for line 8, record[0]=1
// because setting record[0]=1 makes it much easier in the loop
int row = obstacleGrid.length;
int col = obstacleGrid[0].length;
int record[] = new int[col];
record[0]=1;
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
if(j==0){ // for the 1st col, it could change if there is obstacle, which is different from version I
if(obstacleGrid[i][j]==1) record[j]=0; // the adding for version II
}
else{
if(obstacleGrid[i][j]==1) record[j]=0; // the adding for II version
else record[j] += record[j-1];
}
}
}
return record[col-1];
}
}
但是因为加了obstacle这个条件,所以要改的地方 要搞对,也必须在特别了解 version I 的基础之上。
1,第一列在version I中永远是1,所以不需要改变;但在version II 中,可能改变的,如果出现了障碍,那就是0
2,其他的点,如果有障碍,同样的,就是0了;不是的话就是 转移公式;
3,为了一开始让record[0]=1,就要确定这个assign的条件成立,也就是第一个格子,必须不是障碍,如果是障碍也可以直接 return 0了,因为走不通。
代码如下:
class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
if(obstacleGrid.length==0 || obstacleGrid[0].length==0) return 0;
if(obstacleGrid[0][0]==1) return 0; // this is for line 8, record[0]=1
// because setting record[0]=1 makes it much easier in the loop
int row = obstacleGrid.length;
int col = obstacleGrid[0].length;
int record[] = new int[col];
record[0]=1;
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
if(j==0){ // for the 1st col, it could change if there is obstacle, which is different from version I
if(obstacleGrid[i][j]==1) record[j]=0; // the adding for version II
}
else{
if(obstacleGrid[i][j]==1) record[j]=0; // the adding for II version
else record[j] += record[j-1];
}
}
}
return record[col-1];
}
}
相关文章推荐
- LeetCode-63-Unique Paths II(C语言实现)
- 63. Unique Paths II
- 63.Unique Paths II
- 63. Unique Paths II
- leetcode63-Unique Paths II
- Unique Paths II - LeetCode 63
- 63. Unique Paths II
- leetcode_question_63 Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- LeetCode63——Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- LeetCode_OJ【63】Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- LeetCode 63 Unique Paths II
- LeetCode 62/63/120/64 Unique PathsI/II Triangle/Min sum Path/Rectangle Area--DP
- LeetCode(63) Unique Paths II