64. Minimum Path Sum-Leetcode

算法思想

与62,63题很相似,只需要维护一个一维数组,每次更新一维数组的值时进行运算dp[j]=min(dp[j-1],dp[j])+grid[i][j-1]即可,但是需要注意事先对边界值的处理

我的解法

class Solution {
public:
    int minPathSum(vector>& grid) {
        int m=grid.size();
        int n=grid[0].size();
        vector dp(n+1,0);
        //dp[1]=grid[0][0]; 因为下续循环中i==0时会对此值进行重新的计算
        for(int i=0;i

最优解法

推荐的最快时间算法在空间复杂度上不足,与本解法的时间差在于对边界值处理时在一维循环里会快于二维循环,因此也可以对我的解法进行时间上的优化处理。

class Solution {
public:
    int minPathSum(vector>& grid) {
        int m=grid.size(); 
        if(m==0) return 0; 
        int n=grid[0].size(); 
        
        vector> dp(m, vector(n, 0));
        
        dp[0][0]=grid[0][0]; 
        
        for(int i=1; i

你可能感兴趣的:(64. Minimum Path Sum-Leetcode)