343. 整数拆分
题目链接:https://leetcode.cn/problems/integer-break/
0x1 看到题目的第一想法
0x2 自己实现过程中遇到哪些困难
- dp[i]转移方程
0x3 今日学习的文章链接,或者视频链接
0x4 看完代码随想录之后的想法
- dp[i] = max(dp[i], j*(i-j), j*dp[i-j], dp[j]*dp[i-j]) j从1开始遍历
0x5 今日收获,记录一下自己的学习时长
- 1h
96. 不同的二叉搜索树
题目链接:https://leetcode.cn/problems/unique-binary-search-trees/
0x1 看到题目的第一想法
0x2 自己实现过程中遇到哪些困难
- dp[i]转移方程
0x3 今日学习的文章链接,或者视频链接
- https://programmercarl.com/0096.不同的二叉搜索树.html
- https://leetcode.cn/problems/unique-binary-search-trees/solutions/6693/hua-jie-suan-fa-96-bu-tong-de-er-cha-sou-suo-shu-b/?orderBy=hot
0x4 看完代码随想录之后的想法
# dp[i] = 以1为头结点的二叉搜索树(i节点)个数f(1) + 以2为头结点的二叉搜索树个数f(2) + ... + 以i为头结点的二叉搜索树个数f(i) # dp[i] = f(1) + f(2) + ... + f(i) # 以1为头结点的二叉搜索树个数,左子树个数为0,右子树个数为i-1个, = dp[0]\*dp[i-1] # 以i为头结点的二叉搜索树个数,左子树个数为i-1,右子树个数为0个, = dp[i-1]\*dp[0] # 以j为头结点的二叉搜索树个数,左子树个数为j-1,右子树个数为i-j个, = dp[j-1]\*dp[i-j] # 综上:dp[i] += dp[j-1]\*dp[i-j] j从1开始
0x5 今日收获,记录一下自己的学习时长
- 1h
总结
- 动态规划 5步法
1
2
3
4
5# 1.定义dp数组,明确dp[m][n]的含义
# 2.确定转移公式
# 3.dp数组的初始化
# 4.确定遍历顺序
# 5.举例推导dp数组复习
- day12
- 滑动窗口最大值
- 维护一个从大到小的队列
- 窗口不会滑
- 前 K 个高频元素
- 统计频率
- 维护一个大小为k的小根堆
- 滑动窗口最大值
待重点复习
343, 96, 239, 347