🧩 第 1 题
❓ 判断:
数组和链表都是线性表。链表的优点是插入删除不需要移动元素,并且能随机查找。
📖 故事讲解
想象你在图书馆 📚:
数组:
👉 一本书页码清楚,第 100 页“啪”一下就翻到链表:
👉 书页用绳子串起来,只能一页一页翻
🔍 分析
✔ 数组、链表都是线性表
✔ 链表插入、删除快
❌ 链表不能随机访问
✅ 正确判断
❌ 错误
🎯记忆口诀
链表:好插删,不好跳
🧩 第 2 题
❓ 判断:
若 gcd(a,b) 正确,则
lcm(a,b) = a / gcd(a,b) * b能正确求最小公倍数。
📖 故事讲解
两个齿轮 ⚙️
最小公倍数 = 它们一起转到对齐的最小步数
🔍 数学公式
a × b = gcd(a,b) × lcm(a,b)变形得到:
lcm = a / gcd × b👉 先除后乘,防止溢出!
✅ 正确判断
✅ 正确
🎯这是必背公式!
🧩 第 3 题
❓ 判断:
单链表中,已知指针 p 指向要删除的结点(非尾结点),
可以通过复制 p->next 再删除 p->next 实现删除。
📖 故事讲解
一排火车 🚆
你不能把当前车厢拆掉,但可以:
👉让它“变成”下一节
👉 再把真正的下一节删掉
🔍 技巧代码思想
p->data = p->next->data; p->next = p->next->next;⚠️ 限制条件
p不能是尾结点
✅ 正确判断
✅ 正确
🎯这是链表经典技巧
技巧
🧩 第 4 题
❓ 判断:
线性筛一定比埃氏筛好,应该优先使用。
📖 故事讲解
🚲 埃氏筛:
简单、好骑🚀 线性筛:
更快,但更复杂
🔍 分析
线性筛:O(n)
埃氏筛:O(n log log n)
但:
小数据
初学
实现简单
👉埃氏筛更合适
✅ 正确判断
❌ 错误
🎯不是越快越好,而是“合适最好”
🧩 第 5 题
❓ 判断:
二分查找只适用于有序数据。
若只查一次,为了二分而排序通常不划算。
📖 故事讲解
找一本书 📘:
只找一次 👉 一本本翻
要找 100 次 👉 先整理目录
🔍 分析
排序:O(n log n)
一次查找:O(n)
👉 为了一次二分,不值!
✅ 正确判断
✅ 正确
🎯二分=多次查找才划算
🧩 第 6 题
❓ 判断:
快排使用“三数取中”可降低最坏情况概率。
📖 故事讲解
选队长 👦👧👦
选最矮 ❌
选最高 ❌
选中等 ✔
🔍 三数取中
头
中
尾
👉 选中间值做 pivot
✅ 正确判断
✅ 正确
🎯这是快排常见优化
🧩 第 7 题
❓ 判断:
贪心:每步选当前最优
分治:拆分再合并
📖 故事讲解
🍰 贪心:
每次先吃最大的🧩 分治:
切成小块再拼
🔍 描述准确
贪心:不回头
分治:可递归合并
✅ 正确判断
✅ 正确
🧩 第 8 题
❓ 判断:
递归版 fib(n) 的时间复杂度是 O(n)
📖 故事讲解
算 fib(5):
fib(5) ├─ fib(4) │ ├─ fib(3) │ │ ├─ fib(2) │ │ └─ fib(1) │ └─ fib(2) └─ fib(3) ├─ fib(2) └─ fib(1)👉大量重复计算
🔍 实际复杂度
O(2^n)✅ 正确判断
❌ 错误
🎯递归斐波那契是“指数爆炸”
🧩 第 9 题
❓ 判断:
递归函数一定要有终止条件,否则可能栈溢出。
📖 故事讲解
下楼梯 🪜
没有“到 1 楼停”
👉 一直往下,掉下去 💥
🔍 结论
必须有
if (结束条件) return
✅ 正确判断
✅ 正确
🎯递归三要素之一
🧩 第 10 题
❓ 判断:
贪心算法每步最优,一定得到全局最优。
📖 故事讲解
你每次都想拿最多糖的包裹 🍬
结果最后发现:
👉 自己最后包里,装的糖还是没有别人多
🔍 事实
有些问题适合贪心
有些不行(如背包问题)
✅ 正确判断
❌ 错误
🎯贪心不是万能钥匙