🎯 第1题:链表比数组插入更有效率
1、🌈故事
数组骑士 🧱 和 链表精灵 🔗 比赛:
👉 “谁在插入、删除时更快?”
2、🧠一步一步分析
① 数组:
插入一个数 👉 后面都要往后挪 ❌
删除一个数 👉 后面都要往前挪 ❌
② 链表:
插入 👉 改指针就行 ✅
删除 👉 改指针就行 ✅
3、✅结论
👉 链表更擅长:插入和删除
🎉答案:C
题目中,其他答案都是数组的专长。
4、📌小口诀
👉 数组要搬家,链表改指针
🎯 第2题:怎么判断链表是空的?
1、🌈故事
守门员问:
👉 “这个链表里面有没有人?”
2、🧠一步一步分析
判断“空”就是看:
① head 是不是空 👉 ✅
② tail 是不是空 👉 ✅
③ size 是不是 0 👉 ✅
3、❌错误选项:
👉head.data == 0
问题:
head 是指针!
不能直接用
.data
4、✅结论
🎉答案:C
5、📌小口诀
👉 判断空,看有没有节点,不看数值
🎯 第3题:往链表尾巴加人
1、🌈故事
队伍后面来了一个新同学 👦
👉 要接到最后!
2、🧠一步一步操作
① 让原尾巴指向新节点
👉tail->next = newNode
② 新节点指回原尾巴
👉newNode->prev = tail
③ 更新尾巴
👉tail = newNode
3、✅结论
🎉答案:D
4、📌小口诀
👉 先连后指,最后换尾
🎯 第4题:约瑟夫淘汰游戏
1、🌈故事
一圈小朋友,每数到 k 淘汰一个 😵
现在要删除当前人!
2、🧠正确步骤
① 断开链
👉prev->next = p->next
② 删除节点
👉delete p
③ 移动到下一个
👉p = prev->next
⚠️顺序不能乱!
3、✅结论
🎉答案:A
4、📌小口诀
👉 先断链 → 再删除 → 再移动
🎯 第5题:质数判断的小技巧
1、🌈故事
质数侦探在找(合数)
2、🧠关键规律
👉 大于3的质数,都在:
👉6k ± 1
例如:
5 = 6×1 -1
7 = 6×1 +1
11 = 6*2 -1
13 = 6*2 +1
3、🧠分析选项
A ❌(代码已经特判5)
B ❌(不用检查到 n/2)
C ✅(核心规律)
D ❌ (慢了)
4、✅结论
🎉答案:C
5、📌小口诀
👉 质数藏在 6k±1
🎯 第6题:最大公约数(谁更快)
1、🌈故事
两个方法比赛:
🐢 暴力枚举
⚡ 欧几里得算法
2、🧠分析
👉 欧几里得(递归)更快 ✅
3、❌错误点:
👉 改成i > 1
问题:
如果最大公约数是1,就找不到了 ❌
4、✅结论
🎉答案:D
5、📌小口诀
👉 gcd 可能是1,不能漏!
🎯 第7题:找质数的三种方法
1、🌈故事
三位选手比赛:
1️⃣ 普通判断(慢)
2️⃣ 埃氏筛(很快)
3️⃣线性筛法比埃氏筛法更快,尤其在处理大范围数据时效率优势显著。
2、🧠比较
👉 速度:
普通 < 埃氏筛 < 线性筛
❌错误说法:
👉 “埃氏筛最快” ,说的太绝对,肯定不正确。
3、✅结论
🎉答案:D
4、📌小口诀
👉 埃氏筛法,线性筛都很快,
👉小范围数据(如 n≤10^6):可以使用埃氏筛
👉大范围数据(如 n≥10^7):一定要使用线性筛
🎯 第8题:唯一分解定理
1、🌈故事
每个数字都有“唯一拆分方式”
2、🧠规律
👉 每个数都能拆成:
👉质数 × 质数 × …
而且:
👉 只有一种拆法!
3、🧠举例
12 = 2 × 2 × 3
不能写成别的组合
4、✅结论
🎉答案:B
5、📌小口诀
👉 一个数 = 唯一的质数乘积
🌟 知识点总结:
1️⃣ 链表插删快
2️⃣ 判断空看指针
3️⃣ 插入三步走
4️⃣ 删除要顺序
5️⃣ 质数看6k±1
6️⃣ gcd不能漏1
7️⃣ 线性筛最快
8️⃣ 质数分解唯一