输入整数数组 arr
,找出其中最小的 k
个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。
方法一:排序
1 | class Solution { |
复杂度分析:时间复杂度为O(n log n),空间复杂度为O(k)。其中,n为数组的长度。
方法二:Partition方法(快速排序)
1 | class Solution { |
复杂度分析:时间复杂度为O(n),空间复杂度为O(k)。其中,n为数组的长度。
方法三:堆
- 大根堆
1 | class Solution { |
复杂度分析:时间复杂度为O(n log k),空间复杂度为O(k)。其中,n为数组的长度。
- 小根堆
1 | class Solution { |
复杂度分析:时间复杂度为O(n log n),空间复杂度为O(n)。其中,n为数组的长度。