您的位置:首页 > 产品设计 > UI/UE

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];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: