[leetcode] 64. Minimum Path Sum 解题报告

来源:互联网 发布:淘宝卖家怎么上架商品 编辑:程序博客网 时间:2024/06/09 22:43

题目链接:https://leetcode.com/problems/minimum-path-sum/

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

Note: You can only move either down or right at any point in time.



思路:很容易看出的动态规划题目,其状态转移方程也非常明显:

        dp[i][j] = min( dp[i-1][j], dp[i][j-1]) + grid[i-1][j-1];

即当前dp值是由左边的节点dp值和上面节点dp值最小值 + 当前节点grid值组成。

时间复杂度为O(m*n),空间复杂度为O(m*n),具体代码如下:

class Solution {public:    int minPathSum(vector<vector<int>>& grid) {        if(grid.size()==0) return 0;        int row = grid.size(), col = grid[0].size();        vector<vector<int>> dp(row+1, vector<int>(col+1, INT_MAX));        dp[0][1] = dp[1][0] = 0;        for(int i =1; i <= row; i++)        {            for(int j =1; j <= col; j++)            {                dp[i][j] = grid[i-1][j-1] + min(dp[i-1][j], dp[i][j-1]);            }        }        return dp[row][col];    }


0 0
原创粉丝点击