Leetcode63 Unique Paths II
2015-08-12 22:38
507 查看
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.
Solution1
和上一道题思路一样,只是中间添加了一些障碍物,所以只是在障碍物的地方就要将其设为0.public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; if(m==0) return 0; int n = obstacleGrid[0].length; if(n==0||obstacleGrid[0][0]==1) return 0; int[][] dp = new int[m] ; dp[0][0] = 1; for(int i=1;i<n;i++) if(obstacleGrid[0][i]!=1) dp[0][i] += dp[0][i-1];//这里必须要从左边得到 for(int i=1;i<m;i++){ if(obstacleGrid[i][0]!=1) dp[i][0] = dp[i-1][0]; for(int j=1;j<n;j++){ if(obstacleGrid[i][j]==1) dp[i][j] = 0; else dp[i][j] = dp[i-1][j] + dp[i][j-1]; } } return dp[m-1][n-1]; } }
Solution2
用滚动数组public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; if(m==0) return 0; int n = obstacleGrid[0].length; if(n==0||obstacleGrid[0][0]==1) return 0; int[] dp = new int ; dp[0] = 1; for(int i=1;i<n;i++) if(obstacleGrid[0][i]!=1) dp[i] = dp[i-1]; for(int i=1;i<m;i++){ if(obstacleGrid[i][0]==1) dp[0] = 0; for(int j=1;j<n;j++){ if(obstacleGrid[i][j]==1) dp[j] = 0; else dp[j] += dp[j-1]; } } return dp[n-1]; } }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解
- LeetCode [Day 6] ZigZag Conversion 题解