This commit is contained in:
parent
65c6c74cc4
commit
0b1e7287bc
@ -7,6 +7,30 @@
|
||||
3. `dp[0] = 0`, `dp[1] = 1`
|
||||
4. 从前向后遍历
|
||||
|
||||
```cpp
|
||||
## [70. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/)
|
||||
|
||||
```
|
||||
1. `dp[i]` 是爬到第 `i` 阶楼梯的方法数
|
||||
2. `dp[i] = dp[i - 1] + dp[i - 2]`
|
||||
3. `dp[1] = 1`, `dp[2] = 2`, `dp[0]` 不用管
|
||||
4. 从前向后遍历
|
||||
|
||||
## [746. 使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/)
|
||||
|
||||
1. `dp[i]` 是爬到第 `i` 阶的最小开销(假设 `i == 0` 代表第一个阶梯)
|
||||
2. `dp[i] = min{dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]}`
|
||||
3. `dp[0] = 0`, `dp[1] = 0`
|
||||
4. 从前向后遍历
|
||||
|
||||
## [62. 不同路径](https://leetcode.cn/problems/unique-paths/)
|
||||
|
||||
1. `dp[i][j]` 表示到 `(i, j)` 的位置有多少种路径(从 `(0, 0)` 出发)
|
||||
2. `dp[i][j] = dp[i - 1][j] + dp[i][j - 1]`
|
||||
3. `dp[i][0] = 1`, `dp[0][j] = 1`
|
||||
4. 从前向后遍历
|
||||
|
||||
## [63. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/)
|
||||
|
||||
1. `dp[i][j]` 表示到 `(i, j)` 的位置有多少种路径(从 `(0, 0)` 出发)
|
||||
2. `dp[i][j] = if (isNotObstacle[i - 1][j]) dp[i - 1][j] + if (isNotObstacle[i][j - 1]) dp[i][j - 1]`
|
||||
3. 如果 `(i, 0)` 是障碍物,那么 `(0, 0)` 到 `(i - 1, 0)` 都初始化为 `1`,后面的初始化为 `0`。`(0, j)` 同理
|
||||
4. 从前向后遍历
|
||||
|
@ -9,3 +9,7 @@
|
||||
3. `dp` 数组如何初始化
|
||||
4. 确定遍历顺序(从前向后还是从后向前)
|
||||
5. 推几个来验证
|
||||
|
||||
技巧:
|
||||
|
||||
- 如果可以的话,初始化 `dp` 的长度,而不要每次都 `dp.push_back()`。初始化能够有更好的性能。
|
||||
|
Loading…
Reference in New Issue
Block a user