【leetcode】63. Unique Paths II
来源:互联网 发布:java 适配器模式详解 编辑:程序博客网 时间:2024/06/03 13:48
一、题目描述
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.
思路:动态规划,还是用的“Unique Paths” 这道题的思想,不过设置了障碍之后,对于第一行和第一列要单独拿出来处理。用path[i][j] 表示到[i][j]位置的路径的条数,先判断[i][j]位置是否是障碍,即值是否是1,如果是障碍,那么path[i][j]=0,否则用状态转换方程path[i][j] = path[i-1][j] + path[i][j-1]
c++代码(3ms,26.70%)
class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m,n; m = obstacleGrid.size(); n = obstacleGrid[0].size(); int i,j; int path[m][n]; path[0][0] = obstacleGrid[0][0]==0?1:0; for(i=1; i<n;i++){ //先处理第一行 if(obstacleGrid[0][i] == 1){ path[0][i]=0; }else{ path[0][i] = path[0][i-1]; } } for(i=1;i<m;i++){ //处理第一列 if(obstacleGrid[i][0] == 1){ path[i][0] = 0; }else{ path[i][0] = path[i-1][0]; } } for(i=1;i<m;i++){ for(j=1;j<n;j++){ if(obstacleGrid[i][j] == 1){ path[i][j]=0; }else{ path[i][j] = path[i-1][j] + path[i][j-1]; } } } return path[m-1][n-1]; }};
c++代码2(3ms)
往外扩展一行一列,左上角位置从1,1开始。这样对于第一行第一列就不需要单独拿出来讨论了。
class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m,n; m = obstacleGrid.size(); n = obstacleGrid[0].size(); int i,j; vector<vector<int> > path(m+1, vector<int>(n+1, 0)); path[0][1] = 1; for(i=1;i<=m;i++){ for(j=1;j<=n;j++){ if(!obstacleGrid[i-1][j-1]){ path[i][j] = path[i-1][j] + path[i][j-1]; } } }//for return path[m][n]; }};
0 0
- LeetCode --- 63. Unique Paths II
- LeetCode 63.Unique Paths II
- [leetcode] 63.Unique Paths II
- [leetcode] 63.Unique Paths II
- Leetcode 63. Unique Paths II
- LeetCode 63. Unique Paths II
- [leetcode] 63. Unique Paths II
- leetcode 63. Unique Paths II
- 63. Unique Paths II LeetCode
- LeetCode 63. Unique Paths II
- [LeetCode]63. Unique Paths II
- leetcode 63. Unique Paths II
- LeetCode *** 63. Unique Paths II
- leetcode 63. Unique Paths II
- Leetcode:63. Unique Paths II
- LeetCode 63. Unique Paths II
- leetcode 63.Unique Paths II
- LeetCode 63. Unique Paths II
- 用bootstrap写一个简洁的网页
- Android Studio插件开发实践--从创建到发布
- Hibernate 建立双向多对多关联关系
- 写给进军大数据的你们:
- MySQL聚合函数
- 【leetcode】63. Unique Paths II
- Android -- Handler消息机制简析
- C#随机函数Random()的用法
- [leetcode] Candy
- (备忘)myeclipse2014使用前的一些配置
- 第八周—鸡兔同笼
- 设计模式——建造者模式
- 个人MYSQL操作记录
- CLR无法从COM 上下文*****转换为COM上下文*****,这种状态已持续60秒。