leetcode在力扣 App 中打开
调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

示例:

输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]

提示:

  • 0 <= len(arr) <= 100000
  • 0 <= k <= min(100000, len(arr))
通过次数
124.1K
提交次数
217.2K
通过率
57.1%


相关企业

提示 1
实际上有几种方法。动脑筋想一想。从简单的方法开始也没问题。

提示 2
考虑以某种方式重新组织数据或者使用其他数据结构。

提示 3
你能把这些数字排序吗?

提示 4
使用堆或某种树怎么样?

提示 5
如果你选了一个任意的元素,那么需要多长时间才能算出它的元素的排序(比它大或比它小的元素的个数)?

提示 6
如果你选择一个任意的元素,平均来说,就会得到一个在第50百分位数附近的元素(一半的元素比它大,一半的元素比它小)。如果反复这样做呢?

提示 7
回想一下前面的提示,特别是与快速排序相关的提示。

提示 8
如果当你选择一个元素时,你交换周围的元素(就像在快速排序中所做的那样),使它所有下方的元素都位于上方的元素之前,那会怎么样?如果你重复做这个,能找到最小的一百万个数吗?

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
arr =
[1,2,3]
k =
0
Source