leetcode Unique Paths II
来源:互联网 发布:微三云 源码 编辑:程序博客网 时间:2024/05/29 09:20
递归算法超时
超时的代码
class Solution {public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { int iRow = obstacleGrid.size(); int iCol = obstacleGrid[0].size(); if(iRow==0||iCol==0) return 0; pathNum = 0; uniquePathsWithObstaclesHelper(obstacleGrid, 0, 0, iRow-1, iCol-1); } void uniquePathsWithObstaclesHelper(vector<vector<int> > obstacleGrid, int iCur, int jCur, int finishRow, int finishCol) { if((iCur==finishRow&&jCur==finishCol-1)||(jCur==finishCol&&iCur==finishRow-1)) { pathNum++; return; } if(iCur<finishRow&&obstacleGrid[iCur+1][jCur]!=1) uniquePathsWithObstaclesHelper(obstacleGrid, iCur+1, jCur, finishRow, finishCol); if(jCur<finishCol&&obstacleGrid[iCur][jCur+1]!=1) uniquePathsWithObstaclesHelper(obstacleGrid, iCur, jCur+1, finishRow, finishCol); } private: int pathNum;};
动态规划
Accepted代码
与Unique Paths 想法一样,不过需要对障碍进行额外处理
class Solution {public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { int m= obstacleGrid.size(); int n = obstacleGrid[0].size(); if(m==0||n==0) return 0; vector<vector<int> > pathNum(m, vector<int>(n,0)); if(obstacleGrid[0][0]) pathNum[0][0] = 0; else pathNum[0][0] = 1; for(int i = 1; i < m; ++i) pathNum[i][0] =(pathNum[i-1][0]&&!obstacleGrid[i][0]); for(int j = 1; j < n; ++j) pathNum[0][j] =(pathNum[0][j-1]&&!obstacleGrid[0][j]); for(int i = 1; i < m; ++i) for(int j = 1; j < n; ++j) { if(!obstacleGrid[i][j]) pathNum[i][j] = pathNum[i-1][j]+pathNum[i][j-1]; else pathNum[i][j] = 0; } return pathNum[m-1][n-1]; }};
0 0
- LeetCode: Unique Paths II
- [Leetcode] Unique Paths II
- LeetCode : Unique Paths II
- [LeetCode] Unique Paths II
- [LeetCode]Unique Paths II
- [leetcode]Unique Paths II
- LeetCode-Unique Paths II
- [leetcode] Unique Paths II
- LeetCode - Unique Paths II
- LeetCode:Unique Paths II
- 【LeetCode】Unique Paths II
- leetcode Unique Paths II
- LeetCode Unique Paths II
- LeetCode | Unique Paths II
- Leetcode: Unique Paths II
- LeetCode Unique Paths II
- Unique Paths II -- LeetCode
- [LeetCode] Unique Paths II
- Java设计模式菜鸟系列(十一)迭代器模式建模与实现
- Atlassian-Confluence-5.1.4 centos 下安装破解版
- 顺丰总裁王卫:曾目空一切 佛教让我找到精神寄托
- Maven学习(一):maven基础
- 手动脱壳方法及原理
- leetcode Unique Paths II
- 博客插入新格式
- Oracle 卸载
- linkin大话设计模式--抽象工厂
- Ubuntu下安装配置Android SDK
- map的应用hdu1004
- 轮廓线dp初步
- OSX: bash的更新
- swap两个int指针指向的数