# 1. 两数之和(LeetCode 1)中用哈希表存“补数→下标”能把 O(n²) 降到 O(n),先查后存如何避免误用同一元素? A 先存后查更安全 B 哈希表存补数→下标把查找从 O(n) 变 O(1),先查后存避免误用同一元素 ✓ 正确答案 C 复杂度无法降到 O(n) D 哈希表存下标→补数
# 2. 字母异位词分组(LeetCode 49)中排序后作 key 与字符计数数组作 key 的取舍,时间复杂度与内存各是多少? A 排序作 key O(nL log L),计数作 key O(nL),计数法免排序更优 ✓ 正确答案 B 排序作 key 复杂度更低 C 计数作 key 需 O(nL log L) D 两种 key 复杂度相同
# 3. 最长连续序列(LeetCode 128)中为什么先放入哈希集合去重、再只从“序列起点”向两端扩展能保证 O(n)? A 只从 x-1 不在集合中的起点扩展,每个序列只遍历一次,总 O(n) ✓ 正确答案 B 对每个元素都向两端扩展 C 复杂度 O(n²) D 无需去重
# 4. 前 K 个高频元素(LeetCode 347)中统计频率后如何用大小为 K 的小顶堆或桶排序求解? A 桶排序复杂度 O(n log K) B 小顶堆复杂度 O(n) C 哈希统计频率后,小顶堆(O(n log K))或桶排序(O(n))求解 ✓ 正确答案 D 无需统计频率
# 5. 设计 O(1) 随机集合(380),哈希表存下标与动态数组配合删除时的末尾交换删除技巧 A getRandom 不能 O(1) B 删除需 O(n) 移动 C 删除时把待删元素与末尾交换再删末尾,并更新被交换元素下标,实现 O(1) ✓ 正确答案 D 哈希表存元素→值即可
# 6. 有效的字母异位词(LeetCode 242)中字符计数数组 O(n) 判定,扩展到 Unicode 字符集时如何改用哈希表计数? A Unicode 也能用固定 int[26] B 字母用固定数组 O(1) 空间,Unicode 改用哈希表计数 O(字符种类) ✓ 正确答案 C 只需比较长度 D 哈希表空间 O(1)
# 7. 四数相加 II(LeetCode 454)中如何把四个数组拆成“两两求和+哈希计数”从而 O(n²)? A 复杂度 O(n³) B 需四重循环 O(n⁴) C 哈希表只存一个数组 D 拆成两两求和,哈希存 a+b 计数,查 -(c+d),复杂度 O(n²) ✓ 正确答案
# 8. 同构字符串(LeetCode 205)中需要双向映射,只用单向映射会漏判什么? A 单向映射即可 B 同构是一一对应,需双向映射检测"两个字符映射到同一字符"的多对一 ✓ 正确答案 C 只需 s→t 映射 D 同构不要求一一对应
# 9. 快乐数(LeetCode 202)中如何用哈希集合检测循环,与 Floyd 判圈的取舍? A 哈希集合记录出现过的数检测循环,Floyd 判圈用快慢指针省空间 ✓ 正确答案 B 哈希集合空间 O(1) C Floyd 需要 O(n) 空间 D 快乐数循环无法检测
# 10. 存在重复元素 II(LeetCode 219)中哈希表记录最近一次下标与滑动窗口集合两种解法? A 哈希表记录最近下标 O(n)/O(n),滑动窗口集合 O(n)/O(k) ✓ 正确答案 B 滑动窗口空间 O(n) C 哈希表空间 O(k) D 两种解法空间相同
# 11. 猜数字游戏(LeetCode 299)中如何一遍扫描统计 bulls,并用计数数组计算 cows? A bulls 也计入 cows B cows 直接等于多余的频次 C 一遍扫描,bulls 相同位置直接算,cows 用两计数数组取 min 的公共频次 ✓ 正确答案 D 无需计数数组
# 12. 找出所有消失的数字(LeetCode 448)中为什么能用“值作下标取负”的原地标记法,与哈希集合的对比? A 用值作下标取负标记出现,二次扫描正数即未出现,空间 O(1) ✓ 正确答案 B 取负后会破坏值 C 需哈希集合 O(n) 空间 D 无法原地标记
# 13. 寻找重复数(LeetCode 287)中如何用“值作下标”建图 + Floyd 判圈,与哈希/排序解法的取舍? A 排序法 O(n) 时间 B 需额外 O(n) 空间 C 值作下标建图,重复数是环入口,Floyd 判圈 O(n) 时间 O(1) 空间不修改数组 ✓ 正确答案 D 哈希法 O(1) 空间
# 14. 赎金信(LeetCode 383)中字符计数判定 magazine 能否构成 ransomNote 的边界条件? A 只需比较长度 B magazine 字符频次必须 ≥ ransomNote 频次,扣减时不足则 false ✓ 正确答案 C 空 ransomNote 为 false D 字符可重复使用多次
# 15. 单词规律(LeetCode 290)中如何用“模式字符↔单词”双向映射保证一一对应? A 需 pattern→word 与 word→pattern 双向映射,保证一一对应 ✓ 正确答案 B 单向映射即可 C 只需判断长度 D 不同字符可对应同一单词
# 16. 重复 DNA 序列(187)中如何用滚动哈希加集合去重找出长度 10 的重复子串,与直接子串比较的复杂度对比 A 滚动哈希 O(1) 窗口滑动,直接 substring 每窗口 O(10),滚动哈希更优 ✓ 正确答案 B 直接 substring 也 O(1) C 滚动哈希产生无碰撞 D 复杂度为 O(n²)
# 17. 砖墙(LeetCode 554)中统计“各边缘位置出现次数”能求最少穿墙数,边缘如何用前缀和枚举? A 前缀和枚举每行边缘位置,统计重合最多者,穿墙数 = 总行数 - 最大重合数 ✓ 正确答案 B 穿墙数与边缘重合无关 C 需包含最右边缘 D 无需前缀和
# 18. 自定义字符串排序(LeetCode 791)中如何用计数排序按指定顺序重排字符,与 Comparator 排序的差异? A 计数排序需 O(n log n) B Comparator 排序 O(n) C 计数排序按 order 顺序输出+附加剩余,O(n);Comparator 排序 O(n log n) ✓ 正确答案 D 两种方法复杂度相同
# 19. 存在重复元素 III(220)中按值宽度分桶如何把窗口内查找降到 O(1),桶大小与溢出处理 A 无需处理溢出 B 桶大小 t C 只查同一桶 D 桶大小 t+1,桶内差≤t 必命中,相邻桶需检查,负数用 floorDiv、long 防溢出 ✓ 正确答案