剑指 Offer.40-把数组排成最小的数
剑指 Offer.40-最小的k个数
题目链接
问题描述
输入整数数组
arr
,找出其中最小的k
个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。。
个人解法
直接通过库函数对数据进行排序,排序后直接返回最小的k个数字即可(面试中不可用)
1 | class Solution { |
进阶解法
手写排序算法实现,排序后直接返回最小的k个数字即可(推荐手动实现快速排序)大数据情况下不适用(当数据多到超过内存,该方案不能用)
1 | class Solution { |
推荐解法
使用堆或者红黑树进行实现,由于目前个人对红黑树了解不深,尝试使用最大堆进行实现,该方案可应对大数据场景下,该需求的应用
1 | class Solution { |