LeetCode 63.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.
动态规划题,在上一题的基础上增加了一些条件,在grid[i][j]位置,若为1,则到该点的路径为0,若为0,则路径数目为count[i-1][j]+count[i][j-1]
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int m=obstacleGrid.length;
int n=obstacleGrid[0].length;
int count[][]=new int[m][n];
int i,j;
if(obstacleGrid[0][0]==1)
return 0;
else
count[0][0]=1;
for(i=1;i<m;i++)
count[i][0]=(obstacleGrid[i][0]==1?0:count[i-1][0]);
for(j=1;j<n;j++)
count[0][j]=(obstacleGrid[0][j]==1?0:count[0][j-1]);
for(i=1;i<m;i++){
for(j=1;j<n;j++){
count[i][j]=(obstacleGrid[i][j]==1?0:count[i][j-1]+count[i-1][j]);
}
}
return count[m-1][n-1];
}
当然,若希望空间复杂度为O(1),可以不另开辟空间,直接将各个位置路径数目存储在obstacleGrid中。