LeetCode 64:最小路径和

题目

LeetCode 64:最小路径和_第1张图片

思路

当前点值为grid[i][j],则到达该点最小路径总和:dis[i][j] = min(dis[i][j-1],dis[i-1][j]) + grid[i][j]

第一列最小路径总和为:dis[i][j] = dis[i][j-1] + grid[i][j]

第一行最小路径总和为:dis[i][j] = dis[i-1][j] + grid[i][j]

从左上到右下遍历所有位置,可得右下点的最小路径总和。

代码

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int tmp = 0;
        int n = grid.size();
        int m = grid[0].size();
        vector<vector<int>> dis;
        vector<int> discol(m,0);
        for(int i=0;i0][0] = grid[0][0];
        for(int i=0;ifor(int j=0;jif(!i&&!j)
                    continue;
                else if(i&&j)
                {
                    dis[i][j] = min(dis[i][j-1],dis[i-1][j]) + grid[i][j];
                }
                else if(!i&&j)
                {
                    dis[i][j] = dis[i][j-1] + grid[i][j];
                }
                else
                {
                    dis[i][j] = dis[i-1][j] + grid[i][j];
                }
            }
        }
        return dis[n-1][m-1];
    }
};

你可能感兴趣的:(刷题,刷题笔记)