第9章|动态规划

Unit 08 · LeetCode #62 不同路径

← Unit 07
仅本次页面有效
062
Unique PathsGrid DP · Space Compression

二维网格被压成一行后,
同一个格子会先代表“上方”,再代表“当前”。

本单元不把 dp[column] += dp[column - 1] 当成魔法公式。你会沿着真实计算波前观察:覆盖前的 dp[column] 来自上一行,左侧值已经属于当前行;更新顺序正是状态语义的一部分。

已恢复上次学习位置阶段、动画、答题、代码和迁移进度均已恢复。
知识桥梁|Unit 07 → Unit 08
Unit 07:一维金额状态

循环顺序决定当前格读到的是哪一个计数阶段,从而决定统计组合还是排列。

线性依赖 → 二维空间依赖
Unit 08:网格位置状态

当前格只依赖上方与左方;压缩后必须持续分辨旧行值与当前行值。

本单元贯穿问题当前读取的两个数字分别代表哪个二维位置?它们是在本轮之前就存在,还是本轮刚刚写入?
LeetCode #62 原题题面转述、示例、约束与函数签名

题目要求

一个机器人位于 m × n 网格的左上角,希望移动到右下角。机器人每次只能向右或向下移动一步,返回所有可能的不同路径数量。

class Solution: def uniquePaths(self, m: int, n: int) -> int: pass

约束

  • 1 ≤ m, n ≤ 100
  • 测试数据保证答案不超过 2 × 10⁹

示例

输入:m = 3, n = 7
输出:28
输入:m = 3, n = 2
输出:3
路径:右下下、下右下、下下右

目标复杂度

二维版本时间复杂度 O(mn)、空间复杂度 O(mn);一维压缩后空间为 O(n)。

六段主流程
本环节已完成

页面不会自动跳转。请停留观察当前网格、依赖箭头和覆盖前后的数组语义,再主动进入下一阶段。