剑指offer 面试题30:最小的k个数

2016-06-26  本文已影响0人  qmss

题目:
输入n个整数,找出其中最小的k个数。

解法:
top K问题。
如果n不大,可以一次性载入内存,则用一个数组保存,然后进行多次partition()即可

如果n很大,无法一次性载入内存,则构建一个大顶堆(根结点比所有子结点都大),依次读入n个数,并分别与堆顶元素做比较,如果比堆顶元素大,直接丢弃;如果比堆顶元素小,则替换堆顶元素。最后,堆的元素即为所求。

上一篇 下一篇

猜你喜欢

热点阅读