首页 > 其他分享 >【Leetcode】64. 最小路径和

【Leetcode】64. 最小路径和

时间:2022-09-07 22:13:32浏览次数:110  
标签:min int 路径 特判 左面 grid 64 Leetcode dp

题目(链接

给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。

示例 2:

输入:grid = [[1,2,3],[4,5,6]]
输出:12

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 200
  • 0 <= grid[i][j] <= 100

题解

思路:

  • 动态规划
  • 特判第一个位置
  • 如果某个位置在第一行,那么只能从左面走过来,不能从上面走过来;如果某个位置在第一列,那么只能从上面走过来,不能从左面走过来。除此以外的点均是从上面走过来或者从左面走过来。从上面走过来:dp[i][j] = min(dp[i][j], dp[i - 1][j] + grid[i][j]),从左面走过来:dp[i][j] = min(dp[i][j], dp[i][j - 1] + grid[i][j])

code:

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int n = grid.size(), m = grid[0].size();
        const int N = 210, INF = 1e9;
        int dp[N][N];
        for (int i = 0; i < n; i ++){
            for (int j = 0; j < m; j ++){
                // 特判第一个位置
                if (i == 0 && j == 0){
                    dp[i][j] = grid[i][j];
                } else {
                    dp[i][j] = INF;
                    // 特判第一行
                    if (i > 0){
                        dp[i][j] = min(dp[i][j], dp[i - 1][j] + grid[i][j]);
                    }
                    // 特判第一列
                    if (j > 0){
                        dp[i][j] = min(dp[i][j], dp[i][j - 1] + grid[i][j]);
                    }
                }

            }
        }
        return dp[n - 1][m - 1];
    }
};

标签:min,int,路径,特判,左面,grid,64,Leetcode,dp
From: https://www.cnblogs.com/Timesi/p/16667463.html

相关文章

  • [leetcode 876] 链表的中间节点
    [leetcode876]链表的中间节点给定一个头结点为head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例1:输入:[1,2,3,4,5]输出:此列......
  • Leetcode 1707 与数组中元素的最大异或值
    1707.与数组中元素的最大异或值难度困难  给你一个由非负整数组成的数组nums。另有一个查询数组queries,其中queries[i]=[xi,mi]。第i个查询的答案是xi......
  • Leetcode 907 子数组的最小值之和
    给定一个整数数组arr,找到min(b) 的总和,其中b的范围为arr的每个(连续)子数组。由于答案可能很大,因此返回答案模10^9+7。 示例1:输入:arr=[3,1,2,4]输出:17解......
  • ABC264 G - String Fair
    DP+最短路+哈希G-StringFair(atcoder.jp)题意给若干个只包含小写字母的长度<=3的字符串\(T_i\),每个字符串有权值构造一个非空字符串S,若S中包含上述子串,则......
  • ABC264 F - Monochromatic Path
    DPF-MonochromaticPath(atcoder.jp)题意在n*m(1<=n,m<=2000)的网格图中,每个格子有0,1两种,有两种操作将第i行元素反转,花费r[i]代价将第j行元素反转,花......
  • Markdown 图片路径问题
    1.插入图片路径:本地目录1:./images/${filename}.assets  本地目录2:D:\docsify\images/${filename}  ......
  • Java实现图片转base64字符串和图片互相转换
    importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjava.io.*;/***@Description:*@Author:Han*@CreateDate:2022/9/7**/publicc......
  • leetcode 101. Symmetric Tree 对称二叉树(简单)
    一、题目大意给你一个二叉树的根节点root,检查它是否轴对称。示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false......
  • leetcode 1385. 两个数组间的距离值
    给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。「距离值」 定义为符合此距离要求的元素数目:对于元素 arr1[i] ,不存在任何元素 ......
  • 如何判断设备是否支持64位应用
    1)如何判断设备是否支持64位应用​2)真机加载Timeline报错3)主动触发Shader编译报错4)LensFlare(SRP)导致摄像机堆叠后显示UGUI失效这是第308篇UWA技术知识分享的推送。今天我......