LeetCode热题100 最小路径和

题目描述

给定一个包含非负整数的 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 == gridi.length

1 <= m, n <= 200

0 <= gridij <= 200

思路

动态规划板子,dpij表示到达当前(i, j)的最小值,dpij = min(dpi - 1j, dpij - 1) + gridij。

代码

cpp 复制代码
class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int n = grid.size();
        int m  = grid[0].size();
        vector<vector<int>>dp(n, vector<int>(m, 0));

        for(int i = 0; i < n; ++i)
        {
            for(int j = 0; j < m; ++j)
            {
                if(!i && !j) dp[i][j] = grid[i][j];
                else dp[i][j] = min(i > 0 ? dp[i - 1][j] : INT_MAX, j > 0 ? dp[i][j - 1] : INT_MAX) + grid[i][j];
                
            }
        }

        return dp[n - 1][m - 1];
    }
};
相关推荐
Navigator_Z15 分钟前
LeetCode //C - 1313. Decompress Run-Length Encoded List
c语言·算法·leetcode
Bczheng118 分钟前
VS2022 安装MFC和QT
c++·qt·mfc
dialect_1 小时前
CODEFORCES ROUND 1127 DIV2
开发语言·c++·算法
Nuanyt1 小时前
LeetCode Hot 100 链表专题(四)· 3 题(Java)
java·算法·leetcode·链表·双指针
灯澜忆梦1 小时前
LeetCode 1861. 旋转盒子|Go 双指针解法
算法
软件派2 小时前
生产动态数据智能风控:阈值判别、趋势预测、异常识别算法工程落地实战
前端·数据库·算法
悠仁さん9 小时前
【C++】AVL 树
c++
wuminyu9 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
小徐不徐说10 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ZhengEnCi10 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法