题目描述[原题链接][https://www.acwing.com/problem/content/description/49/]
输入n个整数,找出其中最小的k个数。
注意:
- 数据保证k一定小于等于输入数组的长度;
- 输出数组内元素请按从小到大顺序排序;
样例
1 | 输入:[1,2,3,4,5,6,7,8] , k=4 |
算法描述
使用优先队列结构,实现一个大根堆,遍历数组,每次添加一个元素到结果列表中,如果列表长度只大于k
,弹出最大的元素,继续遍历,完成遍历之后,将结果集中的元素反转得到结果,返回结果列表
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |