leetcode_c++:Unique Paths II(063)
来源:互联网 发布:乐视淘宝旗舰店负责人 编辑:程序博客网 时间:2024/06/09 15:53
题目
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.
算法
DP
复杂度:O(nm)
同Unique Paths,只是多个障碍物
* 如果是障碍物,则res[i][j]=0
* 否则,res[i][j]=res[i-1][j]+res[i][j-1]
class Solution {public: int uniquePathsWithObstacles(vector<vector<int> >& obstacleGrid) { if(obstacleGrid.empty() ||obstacleGrid[0].empty()) return 0; int m=obstacleGrid.size(); int n=obstacleGrid[0].size(); int dp[m][n ]; // 对dp初始化,需要更加obstacGrid的值来确定 dp[0][0]=(obstacleGrid[0][0]==0?1:0); //我们需要注意m*1和1*n的初始化 for(int i=1;i<m;i++) dp[i][0]=((dp[i-1][0]==1 && obstacleGrid[i][0]==0)?1:0); for(int j=1;j<n;j++) dp[0][j]=((dp[0][j-1]==1 && obstacleGrid[0][j]==0)?1:0); for(int i=1;i<m;i++) 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]; }};
0 0
- leetcode_c++:Unique Paths II(063)
- leetcode_c++:Unique Paths(062)
- 063 - Unique Paths II
- LeetCode 063 Unique Paths II
- LeetCode 063 Unique Paths II
- LeetCode 063 Unique Paths II
- leetcode 063 Unique Paths II
- LeetCode 063 Unique Paths II
- Unique Paths & Unique Paths II
- Unique Paths &&Unique Paths II
- Unique Paths & Unique Paths II
- Unique Paths & Unique Paths II
- leetcode 063 —— Unique Paths II
- leetcode解题方案--063--Unique Paths II
- LeetCode(63)Unique Paths II
- LeetCode(63) Unique Paths II
- LeetCode 63. Unique Paths II (Python)
- LeetCode: Unique Paths II
- JavaScript知识结构
- Makefile
- SpringMVC异常处理
- qt学习--产生随机数
- Tomcat配置
- leetcode_c++:Unique Paths II(063)
- iOS开发中的视图和各种基础控件----Swift
- 罗马不是一天建成的
- iOS监听横竖屛通知
- 删数问题
- STM32学习笔记之关于上拉电阻、上拉电阻的接法和使用
- Linux目录配置小结
- Android基于事件监听器处理机制
- Java Persistence with MyBatis 3(中文版)