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 == grid[i].length

1 <= m, n <= 200

0 <= grid[i][j] <= 200

思路

动态规划板子,dp[i][j]表示到达当前(i, j)的最小值,dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]。

代码

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];
    }
};
相关推荐
Aaron15885 小时前
RFSOC+VU13P+GPU 在6G互联网中的技术应用
大数据·人工智能·算法·fpga开发·硬件工程·信息与通信·信号处理
迷途之人不知返6 小时前
Stack & Queue
c++·算法
(Charon)6 小时前
【C++/Qt】Qt 实现 MQTT 测试工具:连接 Broker、订阅主题与发布消息
开发语言·c++·qt
春蕾夏荷_7282977256 小时前
1、c++ acl udp服务器客户端简单实例-服务器端(1)
服务器·c++·udp
没文化的阿浩6 小时前
【数据结构】排序(2)——直接选择排序、堆排序
数据结构·算法·排序算法
誰能久伴不乏6 小时前
Qt/C++ 架构之美:用一个“水龙头”隐喻,讲透面向接口编程与彻底解耦
c++·qt·架构
ytttr8736 小时前
基于libusb的用户空间UVC相机库
算法
bybitq6 小时前
Reactor 模型 vs Proactor 模型:区别与代码示例
算法
楼田莉子6 小时前
Linux网络:数据链路层
linux·服务器·开发语言·网络·c++·后端