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

多维动态规划题解——不同路径【LeetCode】记忆化搜索

62. 不同路径

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

❓ 题目描述:

机器人位于一个 m × n 的网格左上角 (0, 0),只能向右或向下移动,每次一步。问到达右下角 (m-1, n-1) 有多少条不同路径?


✅ 解题思路(DFS + 记忆化)

1. 状态定义:
dfs(i, j) 表示从 (0, 0) 到达 (i, j) 的路径数
2. 状态转移方程:
  • 机器人只能从 上方 (i-1, j)左边 (i, j-1) 走到 (i, j),所以:
dfs(i, j) = dfs(i-1, j) + dfs(i, j-1)
3. 终止条件:
  • 如果某个坐标在第一行或第一列(i==0j==0),说明只能沿一个方向走,所以路径数为 1;
  • 如果走到负数坐标(越界),返回 0(安全边界检查,但实际上不会触发);
4. 初始调用:
  • 我们要求的是从 (0, 0)(m-1, n-1) 的路径数,所以调用 dfs(m-1, n-1)
5. 使用 @cache记忆化优化,避免重复子问题导致的指数级递归。

二、算法核心点

✅ 核心思想:二维递归建模 + 缓存子问题(记忆化)

  • 本质上是一个二维 DP 问题,用 DFS 来实现自顶向下的解法;
  • 每个位置的路径数 = 左边格子路径数 + 上边格子路径数;
  • 使用 @cache 缓存递归结果,避免重复计算,极大提升性能。
class Solution:def uniquePaths(self, m: int, n: int) -> int:@cachedef dfs(i:int, j:int) -> int:if i == 0 or j == 0:return 1if i<0 or j<0:return 0return dfs(i-1, j)+dfs(i, j-1)return dfs(m-1, n-1)

三、复杂度分析

  • 时间复杂度:O(m × n)
    • 每个状态 (i, j) 只计算一次,最多 m×n 种状态。
  • 空间复杂度:O(m × n)
    • 记忆化缓存占用空间;
    • 递归栈最大深度为 m + n

总结表:

维度

内容

✅ 思路逻辑

每个格子只能从上或左来,递归地组合路径数

✅ 核心技巧

DFS 建模 + 记忆化;基础的二维路径 DP 问题

✅ 时间复杂度

O(m × n),每个状态只算一次

✅ 空间复杂度

O(m × n),缓存 + 递归栈深度


✅ 拓展建议

  • 更快的迭代写法(自底向上 DP 表),也可将空间优化为 O(n);
  • 组合数学解法:路径总数为组合数 C(m + n - 2, m - 1),最快速.
http://www.lryc.cn/news/590286.html

相关文章:

  • NumPy 常用操作详解汇总和实战示例
  • 泰语OCR识别技术方案
  • 【React Native】安装配置 Expo Router
  • STM32 ODR
  • obsidian1.8.10_win中文_Markdown编辑器_安装教程
  • 逆功率检测设备防逆流解决方案守护电网安全
  • 第五章 管道工程 5.4 管道安全质量控制
  • Uniswap V2/V3/V4简短说明
  • 功能测试和回归测试
  • 架构设计之计算高性能——单体服务器高性能
  • 更灵活方便的初始化、清除方法——fixture【pytest】
  • 使用Node搭建一个直播服务器,实时直播当前桌面
  • 获取印度股票数据API实例:NSE与BSE双市场对接指南
  • Python类中魔术方法(Magic Methods)完全指南:从入门到精通
  • [特殊字符]️ Snort 与 Suricata 入侵检测系统详解
  • 热点综述│高效泛化求解新范式:神经算子综述
  • IIS网站间歇性打不开暴力解决方法
  • 问题处理——qgroundcontrol强制全屏,怎么退出。
  • 20、鸿蒙Harmony Next开发:组件导航(Navigation)和页面路由(@ohos.router)
  • kafka3.6下载安装(传统架构/KRaft模式)+实例测试
  • JavaScript 文件下载功能实现原理解析
  • C++11迭代器改进:深入理解std::begin、std::end、std::next与std::prev
  • Apache SeaTunnel详解与部署(最新版本2.3.11)
  • 从混沌到秩序:数据科学的热力学第二定律破局——线性回归的熵减模型 × 最小二乘的能量最小化 × 梯度下降的负反馈控制系统,用物理定律重构智能算法的统一场论
  • 模型上下文协议(MCP)的工作流程、安全威胁与未来发展方向
  • Qt小组件 - 5 图片懒加载样例
  • 服务攻防-Java组件安全数据处理FastJsonJackSonXStream自动BP插件CVE漏洞
  • 算法穿上隐身衣:数据交易中数据黑箱与算法透明性的法律义务边界
  • 大数据方向研究生就业前景与竞争力分析
  • “重复”定义函数的睿智(Python/与ai助手“智普清言”深度交流)