拿下技术面上传简历

下面这段代码用于统计数组中和为某值的下标对: ```python def pairs(nums): s = set(nums) res = [] for i in range(len(nums)): for j in range(i+1, len(nums)): if nums[i] + nums[j] in s: res.append((i, j)) return res ``` (1) 它的时间复杂度和空间复杂度分别是多少?请说明每一项是怎么算出来的。 (2) 如果线上 nums 的长度 n = 10^6,这个函数能不能直接上线?为什么? (3) 如果 nums 中存在大量重复元素,复杂度会变吗?

数据结构与算法复杂度分析1-3 年知识点 1 个

面试官在考什么

判断候选人是在「数循环层数」还是在「数实际操作次数」,以及是否会把哈希结构、输出集合如实计入空间,并能把复杂度换算成可上线的量级判断。

时间/空间复杂度

回答框架 · 前两步

  1. 时间最坏 Θ(n²):外层 n 次、内层约 n/2 次,每次判断是哈希查找的均摊 O(1)。
  2. 空间:若计入输出 res,最坏有 C(n,2) = Θ(n²) 个下标对;若只算额外空间,则是 set 的 Θ(n)。

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

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

延伸阅读

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

同一能力域的其他题