拿下技术面上传简历

一个已排序的 int32 数组,长度 10^7(约 40MB),判断是否存在 i<j 使 a[i]+a[j] = target。方案 A:双指针;方案 B:哈希表。两者时间都是 O(n),你选哪个?从访存模式、内存开销、最坏情况三个角度说明。如果要求输出所有不重复的数对呢?

数据结构与算法图与搜索3-5 年知识点 1 个

面试官在考什么

考察在渐进复杂度相同时,能否用常数因子、访存局部性和额外内存成本做工程选型。

双指针

回答框架 · 前两步

  1. 双指针:左右指针从两端相向移动,和偏小就右移左指针、偏大就左移右指针;O(n) 时间、O(1) 额外空间,且是顺序访存,cache 友好。
  2. 哈希表:O(n) 时间但需要 O(n) 额外内存(10^7 个 int 的哈希表通常上百 MB 量级),且随机访存 cache miss 高。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题