Skip to content

附录 B · 高频考点 · 易错点 · 速查总表 ​

本附录把第 2~9 章的「📊 考点总结表」聚合为一册,供考前集中复习与临场速查。 星标 = 考频(⭐ 越多,出题频率越高、分值占比越大)。全表共 84 条考点,其中 16 条五星。


一、五星考点 TOP 榜(必看必背) ​

#五星考点章一句话要点
1线性筛法2每个合数只被最小质因子筛一次;核心语句 if (i % primes[j] == 0) break
2GCD 辗转相除法2gcd(a,b) = gcd(b, a%b);终止条件 b == 0
3gcd × lcm = a × b2知一求另一;求 lcm 必须先除后乘防溢出
4链表反转(三指针法)3prev / curr / nextTemp;核心 curr->next = prev
5高精度加法(进位)4循环结束后 carry != 0 必须追加
6二分查找左闭右闭写法5while(l<=r) + r = mid-1 / l = mid+1
7二分答案思想5答案有单调性 + 设计 check 函数
8递归两大要素6基线条件 + 递归条件;缺一 → 无限递归 → 栈溢出
9斐波那契递归6朴素 O(2ⁿ);记忆化/递推降为 O(n)
10归并排序原理与实现7对半拆 → 递归排 → 合并;合并用双指针
11归并排序复杂度7时间 O(n log n),空间 O(n),始终不退化
12快速排序 partition 过程7选 pivot → 分区 → pivot 归位;递归不含 pivot
13快排复杂度7平均 O(n log n),最坏 O(n²)(数组已有序)
14贪心两个基本要素8贪心选择性质 + 最优子结构,缺一不可
15活动选择(按结束时间排序)8排序依据是结束时间,不是开始时间/时长
16合并果子(哈夫曼)8每次取最小两堆 → 小根堆;新堆要放回队列

二、逐章考点 · 易错点总表 ​

第 2 章 初等数论(12 条) ​

考点星出题形式易错点
素数定义(1 不是素数、2 是唯一偶素数)⭐⭐⭐选择/判断判断题陷阱多
素数判定(试除法)⭐⭐⭐⭐选择/代码填空i*i 溢出;漏掉 n<2 判断
埃氏筛法⭐⭐⭐⭐代码填空/选择内层从 i² 开始;复杂度 O(n log log n)
线性筛法⭐⭐⭐⭐⭐代码填空/选择break 的位置和作用(核心考点)
GCD 辗转相除法⭐⭐⭐⭐⭐选择/程序阅读终止条件 b==0;gcd(0,x)=x
LCM 计算⭐⭐⭐⭐选择/计算先除后乘防溢出
gcd × lcm = a × b⭐⭐⭐⭐⭐选择/判断/计算公式记错
模运算(加减乘)⭐⭐⭐⭐选择/代码填空减法取模要加 m 防负数
质因数分解⭐⭐⭐⭐选择/程序填空循环后漏掉 n>1 的素数
约数个数公式⭐⭐⭐选择/计算是 (ai+1) 不是 ai
约数和公式⭐⭐⭐选择/计算等比和从 1 开始
奇偶性分析⭐⭐选择/判断n&1 判断;2 的幂 n&(n-1)==0

第 3 章 链表(10 条) ​

考点星出题形式易错点
链表 vs 数组对比⭐⭐⭐选择/判断各自优缺点记反
单链表节点定义⭐⭐⭐选择/代码填空指针类型写错
单链表遍历⭐⭐⭐⭐程序阅读终止条件 p != nullptr
链表插入(头插/尾插/中间插)⭐⭐⭐⭐代码填空/编程题指针修改顺序(先连后断)
链表删除⭐⭐⭐⭐选择/代码填空先释放再改指针 → 野指针
链表反转(三指针法)⭐⭐⭐⭐⭐代码填空(高频)三指针顺序搞混
双链表插入删除⭐⭐⭐选择/程序阅读四个指针修改顺序
循环链表终止条件⭐⭐⭐判断/选择与普通链表混淆(应为 p == head)
约瑟夫问题⭐⭐⭐⭐编程题/程序阅读报数起始位置搞错
时间复杂度分析⭐⭐⭐选择已知位置插入 O(1),查找 O(n)

第 4 章 高精度(10 条) ​

考点星出题形式易错点
倒序存储原理⭐⭐⭐⭐选择/判断为什么要倒序搞不清楚
高精度加法(进位)⭐⭐⭐⭐⭐编程题/代码填空漏掉最后的进位
高精度减法(借位)⭐⭐⭐⭐编程题忘记比较大小;前导零没去干净
减法的大小比较⭐⭐⭐⭐选择/编程不知道先比较大小再减
高精 × 低精⭐⭐⭐⭐编程题/代码填空进位是多位数,要用 while
高精 × 高精⭐⭐⭐编程题结果数组位置 i+j 搞不清
高精 ÷ 低精⭐⭐⭐代码填空/程序阅读从高位开始算;余数×10+下一位
前导零处理⭐⭐⭐⭐判断/代码填空加法不需要,减法除法需要
结果位数估算⭐⭐⭐选择乘法最多 n+m 位
阶乘高精度实现⭐⭐⭐⭐编程题经典应用,必须掌握

第 5 章 二分算法(10 条) ​

考点星出题形式易错点
二分查找前提(有序)⭐⭐⭐选择/判断忘记有序这个前提
左闭右闭写法⭐⭐⭐⭐⭐代码填空/程序阅读while 条件和 ±1 搞混
左闭右开写法⭐⭐⭐⭐选择/代码填空right=mid 还是 mid-1
mid 防溢出写法⭐⭐⭐⭐选择/代码填空left + (right-left)/2
lower_bound / upper_bound⭐⭐⭐⭐选择/程序阅读≥ 和 > 搞反
二分答案思想⭐⭐⭐⭐⭐编程题不知道什么时候用二分答案
check 函数设计⭐⭐⭐⭐编程题check 函数写不对
整数二分死循环⭐⭐⭐⭐选择/代码填空left=mid 时要向上取整
浮点数二分⭐⭐⭐选择/编程不用 ±1,直接 =mid
时间复杂度 O(log n)⭐⭐⭐⭐选择log n 有多快要有概念

第 6 章 递归(10 条) ​

考点星出题形式易错点
递归两大要素⭐⭐⭐⭐⭐选择/判断忘记基线条件 → 栈溢出
调用栈原理⭐⭐⭐⭐选择/程序阅读栈的后进先出特性
阶乘递归⭐⭐⭐程序阅读基线条件 n=0 或 n=1
斐波那契递归⭐⭐⭐⭐⭐程序阅读/复杂度朴素递归 O(2ⁿ) 很慢
汉诺塔⭐⭐⭐⭐选择/程序阅读参数顺序搞混;移动次数 2ⁿ-1
全排列(回溯)⭐⭐⭐⭐编程题/代码填空忘记恢复 used 和 path
记忆化搜索⭐⭐⭐⭐代码填空/选择memo 初值不能与答案冲突
递归时间复杂度⭐⭐⭐⭐选择用递归树法分析
递归空间复杂度⭐⭐⭐选择等于递归深度(栈深度)
递归 vs 迭代⭐⭐⭐选择/判断深度大时用迭代防溢出

第 7 章 分治算法(12 条) ​

考点星出题形式易错点
分治三步曲(分解-解决-合并)⭐⭐⭐⭐选择/判断和递归的关系搞不清
分治 vs 递归⭐⭐⭐选择/判断递归不等于分治
归并排序原理与实现⭐⭐⭐⭐⭐编程题/代码填空合并过程的边界条件
归并排序复杂度⭐⭐⭐⭐⭐选择/判断时间 O(n log n),空间 O(n)
归并排序稳定性⭐⭐⭐⭐选择/判断✅ 稳定,相等时优先取左
快速排序 partition 过程⭐⭐⭐⭐⭐程序阅读/代码填空指针移动顺序和终止条件
快排复杂度⭐⭐⭐⭐⭐选择/判断平均 O(n log n),最坏 O(n²)
快排稳定性⭐⭐⭐⭐选择/判断❌ 不稳定
快排最坏情况⭐⭐⭐⭐选择数组已有序时退化到 O(n²)
逆序对计数⭐⭐⭐⭐编程题/选择mid-i+1 个;用 long long
快速选择⭐⭐⭐选择/程序阅读平均 O(n) 找第 k 大/小(超纲)
最大子段和(分治)⭐⭐⭐选择/编程三种情况:全左/全右/跨中点

第 8 章 贪心算法(10 条) ​

考点星出题形式易错点
贪心两个基本要素⭐⭐⭐⭐⭐选择/判断贪心选择性质和最优子结构缺一不可
贪心 vs 动态规划⭐⭐⭐⭐选择/判断核心区别:贪心不回头,DP 考虑所有选择
活动选择(按结束时间排序)⭐⭐⭐⭐⭐编程题/选择排序方式搞反
区间选点 / 射气球⭐⭐⭐⭐编程题/选择按右端点排序,选右端点
合并果子(哈夫曼)⭐⭐⭐⭐⭐编程题/选择用小根堆;每次取最小的两个
排队接水(短作业优先)⭐⭐⭐⭐选择/编程按时间升序,短的在前
找零问题⭐⭐⭐选择/判断只有规范货币系统贪心才对
乘船问题(双指针)⭐⭐⭐选择/编程最轻 + 最重搭配
优先队列的使用⭐⭐⭐⭐代码填空小根堆写法 greater<int>(超纲)
贪心正确性判断⭐⭐⭐⭐选择/判断找反例是检验贪心的好方法

第 9 章 算法复杂度分析(10 条) ​

考点星出题形式易错点
大 O 表示法定义与规则⭐⭐⭐选择、判断忽略常数和低阶项的规则理解不清
循环复杂度分析⭐⭐⭐选择、程序阅读内层循环次数不仔细数
对数复杂度来源⭐⭐⭐选择折半/倍增导致 O(log n) 的场景识别
递归复杂度(递归树 + 主定理)⭐⭐选择、判断主定理三种情况混淆(超纲)
快速排序三种情况⭐⭐⭐选择、判断最坏 O(n²) 的触发条件记不清
空间复杂度(含递归栈)⭐⭐⭐选择、判断忽略递归栈空间;原地算法概念不清
数据范围反推复杂度⭐⭐⭐选择1 秒操作数量级记忆不准
时空权衡思想⭐⭐选择、判断记忆化/前缀和/哈希的空间代价
常见算法复杂度对比⭐⭐⭐选择、判断时间/空间/稳定性张冠李戴
复杂度增长排序⭐⭐⭐选择、判断O(√n)、O(n log n) 等中间量级位置记错

三、选择题 / 判断题「陷阱」20 条 ​

#常见说法正误一句话理由
11 是素数❌素数要求大于 1
2所有素数都是奇数❌2 是反例
3线性筛比埃氏筛快✅O(n) vs O(n log log n)
4埃氏筛中合数 12 只被标记一次❌被 2 和 3 重复标记
5求 lcm 写 a * b / gcd 即可❌会溢出,应先除后乘
6减法取模 ((a-b)%m) 就够了❌C++ 负数取模为负,要 +m 再取模
7高精度加法需要倒序存储✅进位从低位向高位,倒序方便追加
8高精度除法也用倒序存储❌除法正序处理,从高位开始
9高精度加法结果也要去前导零❌进位只在最高位产生,无前导零
10n 位 × m 位结果最多 n+m 位✅严格小于 10^(n+m)
11单链表可以双向遍历❌只有 next 指针
12循环链表遍历终止条件是 p->next == nullptr❌应为 p == head
13链表删除可以先 delete 再改指针❌会产生野指针;应"先暂存、再改指针、最后释放"
14二分查找可以用于任何数组❌前提是有序
15mid = (left+right)/2 是标准写法❌可能整数溢出,用 left + (right-left)/2
16lower_bound 判断条件写 a[mid] == target❌应为 >=;upper_bound 为 >
17整数二分 left=mid 时 mid 向下取整没问题❌两元素时死循环,须向上取整
18快速排序是稳定排序❌归并稳定,快排不稳定
19归并排序最坏会退化到 O(n²)❌始终 O(n log n)
20贪心算法总能得到最优解❌须同时满足贪心选择性质 + 最优子结构

四、考前 30 分钟速查卡 ​

┌──────────────────────────────────────────────────────┐
│            GESP 五级 · 考前 30 分钟速查卡            │
├──────────────────────────────────────────────────────┤
│ 【数论】                                             │
│  gcd(a,b)=gcd(b,a%b);gcd×lcm=a×b;lcm 先除后乘     │
│  埃氏筛 O(n log log n);线性筛 O(n)+break            │
│  约数个数=∏(ai+1);约数和=∏(1+p+…+p^ai)              │
│  减法取模:(a-b+m)%m                                 │
├──────────────────────────────────────────────────────┤
│ 【链表】                                             │
│  遍历 p!=nullptr;循环链表 p==head                   │
│  删除:先暂存 → 再改指针 → 最后 delete                │
│  反转三指针:prev/curr/nextTemp,核心 curr->next=prev│
├──────────────────────────────────────────────────────┤
│ 【高精度】                                           │
│  加减乘倒序(个位在 0),除法正序                     │
│  加法收尾:carry!=0 → push_back(carry)               │
│  乘法 i+j 位累加,结果开 n+m 位;除法 余数×10+下一位  │
├──────────────────────────────────────────────────────┤
│ 【二分】                                             │
│  闭区间 [l,r]:while(l<=r),r=mid-1                  │
│  开区间 [l,r):while(l<r),r=mid                     │
│  mid = left+(right-left)/2                           │
│  left=mid → 向上取整;right=mid → 向下取整           │
├──────────────────────────────────────────────────────┤
│ 【递归】                                             │
│  基线条件 + 递归条件;空间 = 递归深度                 │
│  汉诺塔 2ⁿ-1;朴素斐波那契 O(2ⁿ) → 记忆化 O(n)      │
│  回溯三步:选择 → 递归 → 撤销                        │
├──────────────────────────────────────────────────────┤
│ 【分治】                                             │
│  归并:O(n log n)/O(n)/稳定;快排:O(n log n)/O(log n)/不稳 │
│  快排最坏 O(n²)(已有序)                            │
│  逆序对:合并时 arr[i]>arr[j] → 加 (mid-i+1)         │
├──────────────────────────────────────────────────────┤
│ 【贪心】                                             │
│  两要素:贪心选择性质 + 最优子结构                    │
│  活动选择按结束时间;区间选点按右端点                 │
│  合并果子用小根堆;排队接水短的在前                   │
├──────────────────────────────────────────────────────┤
│ 【复杂度】                                           │
│  O(1)<O(log n)<O(n)<O(n log n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)│
│  n≤20 → O(2ⁿ);n≤1e5 → O(n log n);n≤1e9 → O(log n) │
│  递归深度 = 栈空间;辅助空间 O(1) = in-place         │
├──────────────────────────────────────────────────────┤
│ 【时间】180 分钟 = 单选 30 + 判断 20 + 编程 50       │
│  建议:选择判断 40 分钟 / 编程 110 分钟 / 检查 30 分 │
└──────────────────────────────────────────────────────┘

本附录由各章「考点总结表」聚合而成;章节修订后请同步更新。

百炼成钢,融会贯通