【算法|动态规划No.17】leetcode64.最小路径和
- 手机
- 2025-08-17 10:15:02

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。
点击直接跳转到该题目
目录 1️⃣题目描述2️⃣题目解析3️⃣解题代码 1️⃣题目描述给定一个包含非负整数的 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.lengthn == grid[i].length1 <= m, n <= 2000 <= grid[i][j] <= 200 2️⃣题目解析状态表示:
到达(i,j)位置的最小路径和。状态转移方程:
dp[i][j] = min(dp[i - 1][j] , dp[i][j - 1]) + grid[i - 1][j - 1];返回值:
dp[m][n],注意,由于我这里多开辟了一行一列的空间,所以最后返回的是最后一个位置的dp值,即到达最后一个位置的最小路径和。 3️⃣解题代码 class Solution { public: int minPathSum(vector<vector<int>>& grid) { int m = grid.size(),n = grid[0].size(); int ret = 0; vector<vector<int>> dp(m + 1,vector<int>(n + 1,INT_MAX)); for(int i = 1;i <= m;i++) { for(int j = 1;j <= n;j++) { if(i == 1 && j == 1) dp[i][j] = grid[0][0]; else dp[i][j] = min(dp[i][j - 1],dp[i - 1][j]) + grid[i - 1][j - 1]; } } ret = dp[m][n]; return ret; } };通过啦!!!
【算法|动态规划No.17】leetcode64.最小路径和由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【算法|动态规划No.17】leetcode64.最小路径和”