(算法分析Week12)Unique Paths II[Medium]
2017-11-26 14:31
267 查看
63.Unique Paths II[Medium]
题目来源Description
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.
Solution
增添了限制条件,有部分格子有障碍,不能走。由于规则是只能往右和往下,所以若(i,j)位置有障碍,那么(i, j)这个位置就不可达(相当于没有贡献),因此不能用原来的递归式,直接取等于0即可,剩下的代码基本上没有变化,初始化边界上行和列时,出现障碍,后面路径数都是0,所以不能直接把边界上的行和列赋值为1.
注意数组的初始化和dp数组与obstacle数组的对应关系。
obstacle从0开始,dp数组下标从1开始。
Complexity analysis
O(mn)Code
class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); int arr[m+1][n+1]; //注意初始化 for (int i = 0; i <= m; i++) { for (int j = 0; j <= n; j++) { arr[i][j] = 0; } } arr[0][1] = 1; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { //下标对应,要相应减一 if (obstacleGrid[i-1][j-1] == 1) arr[i][j] = 0; else arr[i][j] = arr[i-1][j] + arr[i][j-1]; } } return arr[m] ; } };
Result
相关文章推荐
- (算法分析Week12)Unique Paths[Medium]
- 算法分析与设计——LeetCode Problem.63 Unique Paths II
- 算法第14周Unique Paths II[medium]
- (算法分析Week12)Count Numbers with Unique Digits[Medium]
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】
- 算法分析与设计第五周习题:95. Unique Binary Search Trees II
- 算法练习(15) —— Unique Paths II
- 【Leetcode】【Medium】Unique Paths II
- 【算法】【Dynamic Programming】Unique Paths II
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】
- Medium 63题 Unique Paths II
- LeetCode题库解答与分析——#63.不同路径IIUniquePathsII
- [Leetcode 63, Medium] Unique Paths II
- 【LeetCode】(63)Unique Paths II(Medium)
- 算法练习(41):Unique Paths II
- LeetCode-63-Unique Paths II(动规)-Medium
- 算法分析与设计丨第十六周丨LeetCode(20)——Unique Paths II(Medium)
- unique-paths/unique-paths-ii
- leetcode-63 Unique Paths II
- Unique Paths II