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

多维动态规划题解——最小路径和【LeetCode】空间优化一维数组

一、算法逻辑(逐步思路)

❓ 题目描述:

给定一个 m × n 的非负整数网格 grid,从左上角出发,只能向右或向下走,求走到右下角的路径中,路径权值之和最小是多少。


✅ 解题思路(动态规划 + 一维滚动数组)

1. 状态定义:
  • 定义一维数组 f[j+1] 表示当前处理行中,到达第 j 列位置的最小路径和;
  • 数组长度为 n + 1,其中 f[0] 永远不会使用,目的是简化边界处理
2. 初始化:
f = [inf] * (n + 1)
f[1] = 0
  • 初始化第一行前的“虚拟入口”为 0,使得第一个格子 grid[0][0] 可以自然转移;
  • 其余设为 inf,保证转移时不会取到非法路径。
3. 状态转移:
f[j + 1] = min(f[j], f[j + 1]) + x
  • f[j] 是左边来的;
  • f[j + 1] 是上边来的(因为当前是新一行,但数组中仍是旧值);
  • x 是当前格子 grid[i][j] 的值;
  • 取这两个来源的最小路径,加上当前值,更新当前位置的路径和。
4. 返回结果:
  • 走到最右下角 grid[m-1][n-1],对应一维数组的 f[n]

二、算法核心点

✅ 核心思想:二维动态规划的空间优化

  • 每个格子只依赖它左边上边的状态,因此一行一行滚动更新就足够;
  • 使用一维数组 f 来记录当前行的最小路径和,循环内覆盖更新;
  • 边界偏移技巧使得代码无需特判第一行第一列。
class Solution:def minPathSum(self, grid: List[List[int]]) -> int:n = len(grid[0])f = [inf] * (len(grid[0]) + 1)f[1] = 0for row in grid:for j, x in enumerate(row):f[j + 1] = min(f[j], f[j + 1]) + xreturn f[n]

三、复杂度分析

  • 时间复杂度:O(m × n)
    • 每个格子访问一次。
  • 空间复杂度:O(n)
    • 只需要一个一维数组长度为 n+1

总结表

维度

内容

✅ 思路逻辑

一维数组滚动更新当前行,取左/上最小路径和 + 当前值

✅ 核心技巧

空间优化 + 偏移一位避免边界判断

✅ 时间复杂度

O(m × n)

✅ 空间复杂度

O(n)


✅ 举例说明

grid = [[1, 3, 1],[1, 5, 1],[4, 2, 1]
]
  • 初始 f: [inf, 0, inf, inf]
  • 第一行更新后: [inf, 1, 4, 5]
  • 第二行更新后: [inf, 2, 7, 6]
  • 第三行更新后: [inf, 6, 8, 7]
  • 最终答案为 f[3] = 7

路径为:1 → 3 → 1 → 1 → 1

http://www.lryc.cn/news/590123.html

相关文章:

  • 手撕设计模式之消息推送系统——桥接模式
  • Jenkins全方位CI/CD实战指南
  • U3D打包IOS的自我总结
  • 如何选择适合的云手机配置?解决资源不足带来的性能瓶颈
  • Unity Android Logcat插件 输出日志中文乱码解决
  • Kafka 与 RocketMQ 消息确认机制对比分析
  • 深度解析:Python实战京东资产拍卖平台爬虫,从ID抓取到详情数据落地
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • 短剧系统开发:塑造数字娱乐新未来
  • 面试150 二叉树的层序遍历
  • UE5 相机后处理材质与动态参数修改
  • 猫眼娱乐IOS开发一面手撕算法
  • 工业相机GigE数据接口的优势及应用
  • [特殊字符] 第1篇:什么是SQL?数据库是啥?我能吃吗?
  • SQL,在join中,on和where的区别
  • 锁存型霍尔 IC:定义、应用与优势全解析
  • Git问题排查与故障解决详解
  • 前端性能与可靠性工程:前端韧性工程 - 优雅降级与离线支持
  • 《设计模式之禅》笔记摘录 - 7.中介者模式
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘tkinter’问题
  • 网络编程/Java面试/TCPUDP区别
  • 【代码】Matlab鸟瞰图函数
  • AsyncRelayCommand示例学习
  • 测试开发工作日常用的提示词分享
  • XPath注入攻击详解:原理、危害与防御
  • 智能工厂生产设备状态检测算法
  • 基于多源时序特征卷积网络(MSTFCN)的光伏功率预测模型
  • 基于springboot+vue的酒店管理系统设计与实现
  • 施易德门店管理系统应用案例分析:零售女装品牌伊芙丽的全球化布局
  • PandaWiki与GitBook深度对比:AI时代的知识管理工具,选谁好?