LeetCode63:Unique Paths II
2015-06-12 16:05
417 查看
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
in the grid.
For example,
There is one obstacle in the middle of a 3x3 grid as illustrated below.
The total number of unique paths is
Note: m and n will be at most 100.
加上障碍物后就不能像前面那样直接使用排列组合的知识求解了。这样就只能使用动态规划了,障碍物的含义可以这么理解,就是能到达有障碍物的那些网格的步数为0,这样是否有无障碍物就可以统一起来了。对于网格中的一个点,只有当它那一点无障碍物时,才等于左边网格和上边网格的值,否则保持它的默认值。
上一次是使用动态数组,这一次使用vector来实现。
runtime:4ms
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.
加上障碍物后就不能像前面那样直接使用排列组合的知识求解了。这样就只能使用动态规划了,障碍物的含义可以这么理解,就是能到达有障碍物的那些网格的步数为0,这样是否有无障碍物就可以统一起来了。对于网格中的一个点,只有当它那一点无障碍物时,才等于左边网格和上边网格的值,否则保持它的默认值。
上一次是使用动态数组,这一次使用vector来实现。
runtime:4ms
class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int width=obstacleGrid[0].size(); int height=obstacleGrid.size(); vector<vector<int>> mask;//这种写法是声明一个空的vector for(int i=0;i<height+1;i++) { vector<int> tmp(width+1);//这种写法会使tmp默认大小为width+1,并将每一个元素初始为0 mask.push_back(tmp); } for(int i=0;i<height;i++) { for(int j=0;j<width;j++) { if(i==0&&j==0) { //只有这一点没有障碍物才更新,否则保持默认值0 if(obstacleGrid[i][j]==0) mask[i+1][j+1]=1; } else { //只有这一点没有障碍物才更新,否则保持默认值 if(obstacleGrid[i][j]==0) { mask[i+1][j+1]=mask[i+1][j]+mask[i][j+1]; } } } } return mask[height][width]; } };
相关文章推荐
- easyUI 鼠标悬停显示内容
- 20大UI设计原则
- GRE Issue写作范文Topic123
- db file sequential read 详解
- Uva - 540 - Team Queue
- Uva - 540 - Team Queue
- Burp Suite使用介绍(一)
- 2014年10月12日GRE考试issue作文题及参考范文
- Android多线程编程详解,关于Handler ,Looper , Message , MessageQueue
- IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl
- 新GRE issue写作范文实例
- SQLServer 2005 和自增长主键identity说再见——NEWSEQUENTIALID()
- iOS UICollectionView的使用(用代码创建UI)
- 少之又少的新GRE issue写作范文
- iOS中UITextField用法
- iOS开发UI篇 -- 0401团购案例-使用xib自定义控件
- Permutation Sequence
- [ocUI日记]UIwindow和UIview
- iOS 在一个UITableview中添加多个UIViewCell
- JPA的查询语言—JPQL的命名查询@NamedQuery