Update dp
All checks were successful
ci/woodpecker/push/test Pipeline was successful

This commit is contained in:
Sainnhe Park 2023-02-08 12:46:24 +08:00
parent 65c6c74cc4
commit 0b1e7287bc
2 changed files with 30 additions and 2 deletions

View File

@ -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. 从前向后遍历

View File

@ -9,3 +9,7 @@
3. `dp` 数组如何初始化
4. 确定遍历顺序(从前向后还是从后向前)
5. 推几个来验证
技巧:
- 如果可以的话,初始化 `dp` 的长度,而不要每次都 `dp.push_back()`。初始化能够有更好的性能。