当前位置: 首页 > ds >正文

64. 最小路径和

         最小路径和问题要求在一个包含非负整数的 m x n 网格中,找到一条从左上角到右下角的路径,使得路径上的数字总和最小。

        与 62. 不同路径 - 力扣(LeetCode)类似,这也是一道典型的动态规划问题。下面我们分析其状态定义和状态转移方程。

状态定义: dp[i][j] 表示从起点 (0,0) 到 (i,j) 的所有路径中的最小数字和。

状态转移方程: 由于只能向右或向下移动,当前状态 dp[i][j] 可以由上方状态 dp[i-1][j] 和左方状态 dp[i][j-1] 转移而来。需要注意两点:

  1. 边界处理:第一行只能从左方转移,第一列只能从上方转移,因此需要先初始化这些边界值;
  2. 路径和计算:状态转移时需要加上当前网格的数字 grid[i][j]。

因此,状态转移方程为: dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]

        代码

class Solution {
public:int minPathSum(vector<vector<int>>& grid) {int m = grid.size(),n = grid[0].size();vector<vector<int>> dp(m + 1,vector<int>(n + 1));dp[0][0] = grid[0][0];for (int i = 1;i < m;i++) dp[i][0] = grid[i][0] + dp[i - 1][0];for (int j = 1;j < n;j++) dp[0][j] = grid[0][j] + dp[0][j - 1];for (int i = 1;i < m;i++) {for (int j = 1;j < n;j++) {dp[i][j] = min (dp[i - 1][j],dp[i][j - 1]) + grid[i][j];}}return dp[m - 1][n - 1];}
};

        时间复杂度:O(mn),m.n为数组的行,列数

        空间复杂度:O(mn),存储了数组所有位置的状态

http://www.xdnf.cn/news/6295.html

相关文章:

  • Shell 脚本中的通道号(文件描述符)
  • maven项目, idea右上角一直显示gradle的同步标识, 如何去掉
  • 计算机网络:什么是计算机网络?它的定义和组成是什么?
  • 开源Heygem本地跑AI数字人视频教程
  • python使用matplotlib画图
  • IDEA编辑器设置的导出导入
  • why FPGA喜欢FMC子卡?
  • Vue3学习(组合式API——计算属性computed详解)
  • 使用Word2Vec算法实现古诗自动生成实战
  • Linux514 rsync 解决方案环境配置
  • 2025年渗透测试面试题总结-360[实习]安全工程师(题目+回答)
  • 三维CAD皇冠CAD(CrownCAD)建模教程:工程图模块二
  • 52页PPT | 企业数字化转型L1-L5数据架构设计方法论及案例数字化转型解决方案数字化规划方案
  • 回溯实战篇2
  • 今日行情明日机会——20250514
  • day25-异常处理
  • [Java实战]Spring Security 添加验证码(二十三)
  • android实现USB通讯
  • 基于 Kubernetes 部署容器平台kubesphere
  • CCF第七届AIOps国际挑战赛季军分享(RAG)
  • YOLO v2:目标检测领域的全面性进化
  • 记录 QT 在liunx 下 QFileDialog 类调用问题 ()Linux下QFileDialog没反应)
  • AI日报 · 2025年5月14日|Android 生态大型更新与多端 Gemini 集成
  • UPS是什么?UPS 不间断电源有哪些适配的升压芯片?
  • zabbix7.2最新版本 nginx自定义监控(三) 设置触发器
  • MySQL之基础索引
  • postman 用法 LTS
  • 互联网大厂Java求职面试:AI内容生成平台下的高并发架构设计与性能优化
  • CycleISP: Real Image Restoration via Improved Data Synthesis通过改进数据合成实现真实图像恢复
  • Linux grep -r 查找依赖包是否存在依赖类 Class