拿下技术面上传简历

现场编码:给定一个长度约 10^6 的 int 数组 nums(元素值域 1~10^4,可能大量重复)和一个整数 k(1 ≤ k ≤ 不同元素的个数),返回出现频率最高的 k 个元素,顺序不限。要求你先把方案说清楚——你打算用哪种做法、为什么——再动手写代码。写完后请说明你的时间/空间复杂度,以及当 k 等于「不同元素个数」时你的代码会发生什么。

代码能力与调试排障现场编码1-3 年知识点 1 个

面试官在考什么

判断候选人能否先做算法选型再落代码,而不是条件反射地写一个能过的解法,并且对自己方案的退化场景有意识。

手写算法

回答框架 · 前两步

  1. 先给选型依据:k 远小于不同元素个数时,哈希统计 + 大小为 k 的最小堆是 O(n log k);k 与不同元素个数同阶时堆的优势消失,直接全排序或用桶排序更划算。
  2. 统计阶段用哈希表把频次算出来,O(n)。

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

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

同一能力域的其他题