zoukankan      html  css  js  c++  java
  • 【LeetCode练习题】Minimum Path Sum

    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问题,给定一个m*n的二维数组,每一个值都是非负数。问从起点(左上角)到终点(右下角)的一条路径上所有的数加起来的和最小是多少?

    解题思路:

    参考  Unique Path Two题目的解法  在那个基础上:

    以中间的某一个点A来考虑,A左边是B,A上边是C,假设B和C的结果已经求出来了,那么A的结果应该等于B和C中结果较小的那个加上A位置的给定值。

    特殊的是:

    第一行中,除第一个点的所有的点的结果等于前一个点的结果加上本身的给定值。

    第一列中,除第一个点的所有的点的结果等于上一个点的结果加上本身的给定值。

    (描述起来好绕口的说…………)

    画图来理解:

    代码如下:

    空间复杂度:O(n)

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

    上面的比较容易理解,下面的代码其实是一个道理:

    class Solution {
    public:
        int minPathSum(vector<vector<int> > &grid) {
            int m = grid.size();
            int n = grid[0].size();
            vector<int> dp(n+1,INT_MAX);
            dp[1] = 0;
            for(int i = 0; i < m; i++){
                for(int j = 0; j < n; j++){
                    dp[j+1] = min(dp[j],dp[j+1]) + grid[i][j];
                }
            }
            return dp.back();
        }
    };
  • 相关阅读:
    Java面试——VUE2&VUE3概览
    Golang 面试笔录
    数据科学完整流程概述
    周志华 机器学习 西瓜书 主要符号表
    数据分析师的发展方向?
    404 GET /nbextensions/jupyter-js-widgets/extension.js
    如何使用Conda源快速安装PyTorch?
    美化React组件之CSS Modules
    react如何全局配置sass
    nuxt api缓存,组件缓存,页面缓存
  • 原文地址:https://www.cnblogs.com/4everlove/p/3660762.html
Copyright © 2011-2022 走看看