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
原创粉丝点击