This commit is contained in:
parent
0b1e7287bc
commit
eeacdcc5a8
@ -34,3 +34,19 @@
|
|||||||
2. `dp[i][j] = if (isNotObstacle[i - 1][j]) dp[i - 1][j] + if (isNotObstacle[i][j - 1]) dp[i][j - 1]`
|
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)` 同理
|
3. 如果 `(i, 0)` 是障碍物,那么 `(0, 0)` 到 `(i - 1, 0)` 都初始化为 `1`,后面的初始化为 `0`。`(0, j)` 同理
|
||||||
4. 从前向后遍历
|
4. 从前向后遍历
|
||||||
|
|
||||||
|
## [343. 整数拆分](https://leetcode.cn/problems/integer-break/)
|
||||||
|
|
||||||
|
1. `dp[i]` 为分拆数字 `i`,可以得到的最大乘积
|
||||||
|
2. `dp[i] = max{dp[i], (i - j) * j, dp[i - j] * j}`
|
||||||
|
3. `dp[2] = 1`
|
||||||
|
4. 从前向后遍历
|
||||||
|
|
||||||
|
## [96. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/)
|
||||||
|
|
||||||
|
1. `dp[i]` 为 `n == i` 时二叉搜索树的个数
|
||||||
|
2. `dp[i] += dp[j - 1] * dp[i - j]`,`j - 1` 为 `j` 为头结点左子树节点数量,`i - j` 为以 `j` 为头结点右子树节点数量
|
||||||
|
3. `dp[0] = 1` 空节点也是一棵二叉树,也是一棵二叉搜索树
|
||||||
|
4. 从前向后遍历
|
||||||
|
|
||||||
|
找规律
|
||||||
|
@ -13,3 +13,4 @@
|
|||||||
技巧:
|
技巧:
|
||||||
|
|
||||||
- 如果可以的话,初始化 `dp` 的长度,而不要每次都 `dp.push_back()`。初始化能够有更好的性能。
|
- 如果可以的话,初始化 `dp` 的长度,而不要每次都 `dp.push_back()`。初始化能够有更好的性能。
|
||||||
|
- 知道用 DP ,也知道 `dp[i]` 应该用来表示什么,但不知道递推关系。这个时候多举几个简单的例子找规律(s0096)。
|
||||||
|
Loading…
Reference in New Issue
Block a user