63. Unique Paths II
2017-02-10 11:44
375 查看
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.
这道题是在unique path的基础上加上了障碍物,解决办法还是动态规划,代码如下:
1 public class Solution { 2 public int uniquePathsWithObstacles(int[][] obstacleGrid) { 3 int m = obstacleGrid.length; 4 int n = obstacleGrid[0].length; 5 int[][] dp = new int[m] ; 6 7 dp[m-1][n-1] = obstacleGrid[m-1][n-1]==1?0:1; 8 for(int i=m-2;i>=0;i--){ 9 if(obstacleGrid[i][n-1]==1){ 10 dp[i][n-1]=0; 11 }else{ 12 dp[i][n-1] =dp[i+1][n-1]; 13 } 14 } 15 for(int i=n-2;i>=0;i--){ 16 if(obstacleGrid[m-1][i]==1){ 17 dp[m-1][i] = 0; 18 }else{ 19 dp[m-1][i] = dp[m-1][i+1]; 20 } 21 } 22 for(int i=m-2;i>=0;i--){ 23 for(int j=n-2;j>=0;j--){ 24 if(obstacleGrid[i][j]==1){ 25 dp[i][j] =0; 26 }else{ 27 28 dp[i][j] = dp[i][j+1]+dp[i+1][j]; 29 30 } 31 } 32 } 33 return dp[0][0]; 34 } 35 }
看了discussion后,发现大神的解法很简洁,用的办法我取名字为光的直线传播,代码如下:
1 public class Solution { 2 public int uniquePathsWithObstacles(int[][] obstacleGrid) { 3 int n = obstacleGrid[0].length; 4 int[] dp = new int ; 5 dp[0] = 1; 6 for(int i=0;i<obstacleGrid.length;i++){ 7 for(int j=0;j<obstacleGrid[i].length;j++){ 8 if(obstacleGrid[i][j]==1){ 9 dp[j] = 0; 10 }else if(j>0){ 11 dp[j]+=dp[j-1]; 12 } 13 } 14 } 15 return dp[n-1]; 16 } 17 }
这个解法也是用的dp方法解决的,只不过顺序是相反的,答案也是相反的,相当于镜面映射了。
相关文章推荐
- LeetCode(63) Unique Paths II
- 63. Unique Paths II
- Middle-题目61:63. Unique Paths II
- 63. Unique Paths II
- LeetCode 63 Unique Paths II
- LeetCode 63: Unique Paths II
- leetcode63-Unique Paths II
- LeetCode63 Unique Paths II
- 63. Unique Paths II
- 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
- 63 Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II