62. Unique Paths& 63. Unique Paths II &64. Minimum Path Sum
来源:互联网 发布:个人团队介绍源码 编辑:程序博客网 时间:2024/05/29 17:29
这三道题很像……都需要通过动态规划来解决。
一开始还想用backtrack穷举,然而超时惹……
62.
能够到达path[m-1][n-1]的路径数为能到达path[m-1][n-2]和path[m-2][n-1]的路径数之和
class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> path(m,vector<int>(n,1)); for(int i=1;i<m;i++) for(int j=1;j<n;j++){ path[i][j]=path[i-1][j]+path[i][j-1]; } return path[m-1][n-1]; } };63.
在其中加入了obstacle,因此不能像上一题一样把初始值单纯都赋为1. 因为之后的双层循环需要从1开始(因为之后的操作中会出现i-1和j-1),因此需要对row和col为0的情况进行特殊处理赋值、
class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int row=obstacleGrid.size(); int col=obstacleGrid[0].size(); vector<vector<int>> helper(row,vector<int>(col,0)); helper[0][0]=obstacleGrid[0][0]==1?0:1; for(int i=1;i<row;i++) helper[i][0]=obstacleGrid[i][0]==1?0:helper[i-1][0]; for(int i=1;i<col;i++) helper[0][i]=obstacleGrid[0][i]==1?0:helper[0][i-1]; for(int i=1;i<row;i++) for(int j=1;j<col;j++){ helper[i][j]=obstacleGrid[i][j]==1?0:helper[i-1][j]+helper[i][j-1]; } return helper[row-1][col-1]; }};
64.
很像……只不过是把找路径数改成了找最小路径和,依然要用动态规划的思想。minSum右下角最小的路径和等于它左边、上面最小路径和较小的那个值再加它自己的grid值。
class Solution {public: int minPathSum(vector<vector<int>>& grid) { int row=grid.size(); int col=grid[0].size(); vector<vector<int>> minSum(row,vector<int>(col,0)); minSum[0][0]=grid[0][0]; for(int i=1;i<row;i++) minSum[i][0]=minSum[i-1][0]+grid[i][0]; for(int i=1;i<col;i++) minSum[0][i]=minSum[0][i-1]+grid[0][i]; for(int i=1;i<row;i++) for(int j=1;j<col;j++){ minSum[i][j]=min(minSum[i-1][j],minSum[i][j-1])+grid[i][j]; } return minSum[row-1][col-1]; } };
0 0
- 62. Unique Paths& 63. Unique Paths II &64. Minimum Path Sum
- [LeetCode] Unique Paths、Unique Paths II、Minimum Path Sum
- leetcode Unique Paths & Unique Paths II & Minimum Path Sum
- Unique Paths I,II, Minimum Path Sum
- 【LeetCode】Unique Paths I && II && Minimum Path Sum
- 62. Unique Paths && 63. Unique Paths II
- 62. Unique Paths \ 63. Unique Paths II
- LeetCode 64/62/63. Minimum Path Sum/ Unique Paths i, ii
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- Volley ByteArrayPool
- MFC CheckBox控件选中或取消选中
- SQL HAVING用法详解
- input上传指定类型的文件
- Android群英传——目录
- 62. Unique Paths& 63. Unique Paths II &64. Minimum Path Sum
- python解析xml
- 聚集索引和非聚集索引(整理)
- RadioButton与CheckBox_优就业
- Java 8 正式发布,新特性全搜罗
- activeMq 消费者整合spring
- TreeView,TreeNode,TreeNodeCollection 的使用
- js版身份证省市性别查询
- 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT