说出爬楼梯问题里的“大问题”和“小问题”分别是什么。
算法进阶 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
第 1 页 · 正面(题目)
1什么是DP
2记忆化搜索
算 f(5) 时(不做记忆化),f(2) 大约被重复计算几次?
3状态与转移
为爬楼梯写出初始值 dp[1] 和 dp[2]。
4爬楼梯回顾
n=5 时 dp[5] 等于多少?
5最大子段和
序列 2 -1 3 的最大子段和是多少?
601背包·问题
容量 5,物品甲(重 3 值 4)、乙(重 2 值 3),两个都拿得下吗?总价值多少?
701背包·状态
dp[0][j](一个物品都不考虑)应该等于几?
801背包·转移
若当前物品重 3,而容量 j=2,能选它吗?转移取哪一支?
901背包·写全
内层循环从 j=0 开始会不会出错?
10背包·滚动优化
如果内层改成从小到大,会出现什么错误?
第 2 页 · 正面(题目)
11完全背包
01 背包与完全背包在代码上唯一的区别是什么?
12最长上升子序列
序列 1 3 2 4 的最长上升子序列长度是多少?
13LIS·优化
为什么 g[] 里要存“最小的结尾值”,而不是随便一个?
14编辑距离直觉
把 “cat” 变成 “cut” 最少几步?
15区间DP直觉
区间 DP 里 dp[l][r] 的下标 l 和 r 谁大谁小?
16链表概念
数组和链表,哪个能 O(1) 直接访问第 100 个元素?
17链表结点
next 是 nullptr 说明什么?
18指针直觉
写出让指针 p 前进一步的语句。
19插入与删除
插入时若先写 p->next=q 再写 q->next=p->next 会怎样?
20二叉树概念
一个结点最多有几个孩子?最少几个?
第 3 页 · 正面(题目)
21树的结点
叶子结点的 left 和 right 分别是什么?
22前序遍历
前序遍历第一个访问的一定是哪个结点?
23中序遍历
中序和前序的代码区别在哪一行?
24后序遍历
后序遍历最后一个访问的是哪个结点?
25层序遍历
层序遍历用的是栈还是队列?
26二叉搜索树
BST 中,比根小的数会在根的左边还是右边?
27BST查找
在 BST 里查找时,若 x 大于当前结点值,往哪边走?
28堆的直觉
大根堆的最大值一定在什么位置?
29优先队列用法
默认的 priority_queue<int> 的 top() 取的是最大还是最小?
30哈希表直觉
哈希表理想情况下查找一个元素大约要多少时间?