LeetCode 63. Unique Paths II 带障碍的求终点路径数量
2018-02-23 15:33
573 查看
起点的可行路径数量为1.
接着从上往下,从左往右遍历每个点。
从起点到每个点的可行路径数量 = 左边点的可行路径数量 + 上边点的可行路径数量
若该点为1,则可行路径数量为0
则最终可知结果。复杂度为O(m*n)class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m,n;
int pathnum[101][101];
memset(pathnum,0,sizeof(pathnum));
m = obstacleGrid.size();
n = obstacleGrid[0].size();
int i,j;
i = j = 0;
pathnum[0][0] = 1;
for(i = 0;i < m; i++){
for( j = 0;j < n; j++){
if(obstacleGrid[i][j] == 1){
pathnum[i][j] = 0;
}
else{
if(i != 0)
pathnum[i][j] += pathnum[i-1][j];
if(j != 0)
pathnum[i][j] += pathnum[i][j-1];
}
}
}
return pathnum[m-1][n-1];
}
};
接着从上往下,从左往右遍历每个点。
从起点到每个点的可行路径数量 = 左边点的可行路径数量 + 上边点的可行路径数量
若该点为1,则可行路径数量为0
则最终可知结果。复杂度为O(m*n)class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
int m,n;
int pathnum[101][101];
memset(pathnum,0,sizeof(pathnum));
m = obstacleGrid.size();
n = obstacleGrid[0].size();
int i,j;
i = j = 0;
pathnum[0][0] = 1;
for(i = 0;i < m; i++){
for( j = 0;j < n; j++){
if(obstacleGrid[i][j] == 1){
pathnum[i][j] = 0;
}
else{
if(i != 0)
pathnum[i][j] += pathnum[i-1][j];
if(j != 0)
pathnum[i][j] += pathnum[i][j-1];
}
}
}
return pathnum[m-1][n-1];
}
};
相关文章推荐
- [LeetCode]437. Path Sum III(求二叉树中路径和等于sum的数量)
- leetcode之网格从起点到终点的路径数之滚动数组
- [LeetCode] Unique Paths 起点与终点确定的路径数
- DFS求起点到终点最短路径,手动输入地图,5行4列,地图如下,起点(1,1)终点(4,3) 1是障碍 0是通路
- [LeetCode] Unique Paths II 起点与终点确定的路径数II
- [LeetCode] 112. Path Sum 路径和
- 【LeetCode】路径系列
- 待解决)leetcode 路径和 dfs 线序遍历
- Leetcode 112. 路径总和
- 统计某个路径下所有的java文件,以及统计代码数量
- LeetCode - 112. 路径总和
- [LeetCode] Number of Segments in a String 字符串中的分段数量
- leetCode 112.Path Sum (路径和) 解题思路和方法
- 【Leetcode】Binary Tree Paths 二叉树根结点到所有叶子结点的路径
- leetcode 493. Reverse Pairs 归并排序统计逆序对数量 + 这个我估计是做不出来的,还是直接暴力吧
- leetCode 63.Unique Paths II (唯一路径II) 解题思路和方法
- Leetcode:Minimum Path Sum 最小路径和
- leetcode 63. 不同路径 II dp
- [LeetCode] Out of Boundary Paths 出界的路径
- Java SE 动态读取配置文件路径(配置文件数量不固定) 实现思路