(算法分析Week12)Unique Paths II[Medium]
来源:互联网 发布:亚麻籽油 知乎 编辑:程序博客网 时间:2024/05/17 01:38
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][n]; }};
Result
阅读全文
0 0
- (算法分析Week12)Unique Paths II[Medium]
- (算法分析Week12)Unique Paths[Medium]
- 算法设计Week12 LeetCode Algorithms Problem #63 Unique Paths II
- (算法分析Week12)Count Numbers with Unique Digits[Medium]
- [Medium]Unique Paths II
- 63. Unique Paths II -Medium
- 63. Unique Paths II Medium
- 63. Unique Paths II Medium
- 算法第14周Unique Paths II[medium]
- 算法分析与设计丨第十六周丨LeetCode(20)——Unique Paths II(Medium)
- 算法设计Week12 LeetCode Algorithms Problem #62 Unique Paths
- [Leetcode 63, Medium] Unique Paths II
- 【LeetCode】(63)Unique Paths II(Medium)
- Leetcode 63. Unique Paths II (Medium) (cpp)
- Medium 63题 Unique Paths II
- Leetcode 63. Unique Paths II (Medium) (java)
- 算法第14周Unique Paths[medium]
- [Medium]Unique Paths
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- [leetcode] 22. Generate Parentheses
- 2017湖湘杯Writeup
- HTML5Drag&DropAPI
- opencv安装
- (算法分析Week12)Unique Paths II[Medium]
- MOOC人工智能原理学习笔记1
- C盘清理
- 使用csv存储爬虫数据乱码问题解决
- Python机器学习库
- 【实践+科普】自顶向下,逐步求精——面向过程程序设计方法
- java电话号码生成器
- Windows 7 下如何安装 PyMySQL 链接库
- HTC VIVE开发笔记(六)VRTK中实现基本抓取物体的配置