最小的K个数
问题简述
给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。
思路1:快排(推荐)
思路2:堆排
O(nlogk)
的写法(推荐):取前 k 个数建大顶堆;
然后遍历剩余的数,如果小于堆顶就
pushpop
O(nlogn)
的写法:整体构建小顶堆,然后弹出前 k 个;
Last updated
问题简述
给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。
思路1:快排(推荐)
思路2:堆排
O(nlogk)
的写法(推荐):
取前 k 个数建大顶堆;
然后遍历剩余的数,如果小于堆顶就 pushpop
O(nlogn)
的写法:
整体构建小顶堆,然后弹出前 k 个;
Last updated