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,
The total number of unique paths is 2.
Note: m and n will be at most 100.
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.
分析:
总体思路跟Unique Paths一样,因为有障碍物的存在,则要加多判断逻辑,有障碍物的为0就对了。
public class Solution {
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
if(obstacleGrid==null || obstacleGrid.length==0 || obstacleGrid[0].length==0)
return 0;
int m = obstracleGrid.length;
int n = onstracleGrid[0].length;
int[] dp = new int[n];
dp[0] = 1;//左上角各自不会有障碍物
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){//j从0开始为了判断障碍物
if(obstacleGrid[i][j] == 1)
dp[j] = 0;
else if(j>0)
dp[j] = dp[j-1]+dp[j];
}
}
return dp[n-1];
}
}