🧩Algo 多维动归
62. 不同路径
难度:🟡 Medium | 标签:动归、组合数学 | 状态:⬜ LeetCode 链接
思路
dp[i][j] = dp[i-1][j] + dp[i][j-1]。
首行 / 首列全 1。
滚动数组:一维 dp[j] = dp[j] + dp[j-1],正向更新。
代码
class Solution {
public:
int uniquePaths(int m, int n) {
vector<int> dp(n, 1);
for (int i = 1; i < m; ++i)
for (int j = 1; j < n; ++j)
dp[j] += dp[j - 1];
return dp[n - 1];
}
};
复杂度
- 时间 O(m · n),空间 O(n)
易错 / 回顾
- 数学解:
C(m+n-2, m-1),O(min(m, n)) - 滚动数组方向:本题正向(依赖上方和左侧,都是新一行的旧值)
- 63(带障碍):障碍位置 dp = 0
Related · 多维动归