calculateLeetCode / 编程面试

Two Sum 面试题讲解

Two Sum 之所以长期有搜索量,不是因为它难,而是因为它很适合检验候选人是否能把“正确答案、复杂度、取舍、追问应对”讲完整。

核心模式

哈希表查找

面试重点

表达取舍逻辑

推荐延展

补数类变体

为什么 Two Sum 仍然值得认真讲透

搜索 Two Sum 的用户并不只是来找代码答案,他们更需要一页能帮助自己理解“面试时该怎么讲”的内容。

真正有用的 Two Sum 讲解,应该帮用户把暴力解、哈希优化、复杂度变化和常见追问一次讲清楚。

  • subdirectory_arrow_right题目简单,但非常容易看出候选人是否会比较暴力解与优化解。
  • subdirectory_arrow_right面试官经常从这题延伸到有序数组、流式输入、返回索引等变体。
  • subdirectory_arrow_right它适合作为更大哈希表题型集群的入口页。

一份更强的回答结构应该包含什么

真正好的回答不是直接写代码,而是把为什么要用哈希表、存什么数据、为什么遍历顺序重要,一起讲清楚。

基础解法

O(n²)

先给出双循环的直观方案,证明你能快速建立正确基线。

优化解法

O(n)

用哈希表存已经见过的数字,再检查当前数的补数是否已经出现。

面试细节

索引 / 重复值

说明是否返回索引、是否允许重复、是否保证一定有解。

真正拉开差距的追问部分

lockPremium

这里更适合放 sorted array、k-sum 和 streaming 这类变体,因为它们最能看出候选人是不是只会背答案。

真正的难点不是记住 Two Sum,而是在题目条件被改写后还能快速做出清楚回应。

  • subdirectory_arrow_rightSorted array 变体:使用 two-pointer 从两端向中间夹逼 — O(n) 时间、O(1) 空间,面试官会追问为什么不用哈希表。
  • subdirectory_arrow_right3Sum / 4Sum 延展:固定一个或两个元素,再对剩余部分用 Two Sum 思路 — 复杂度从 O(n²) 到 O(n³),重点讲去重逻辑。
  • subdirectory_arrow_rightStreaming 变体:如果数据流式到达,只能用哈希表维护已见元素 — 空间换时间,无法使用 two-pointer。

这一层更适合放完整答题框架、轮次备注、谈薪清单和最后一周复习提示。

常见问题

Two Sum 会不会太基础,不值得准备?expand_more
不一定。即使题目本身简单,面试官也可能借此观察你的表达、边界处理和从基础解到优化解的推进能力。
刷完 Two Sum 后下一步做什么?expand_more
建议继续做哈希表变体、有序双指针和 3Sum 类追问题,把模式讲透。
Two Sum 面试题讲解 | Interview AiBox