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();
        }
    };
  • 相关阅读:
    使用ffmpeg将mp4切片成ts slice 并生成m3u8命令,同时让IIS支持支持 m3u8
    C# 自动下移动光标 。winform 发送tab,在WPF中
    C# 获取当前程序路径方法整理
    Jeecg-Boot 2.0.0 版本发布,基于Springboot+Vue 前后端分离快速开发平台
    vue2.0源码-丰富的选项合并策略
    JavaScript 核心原理精讲
    前端性能优化
    Vue Router模式
    css3实现圆角三角形
    CSS动画
  • 原文地址:https://www.cnblogs.com/4everlove/p/3660762.html
Copyright © 2011-2022 走看看