【剑指offer】之最小的K个数-C++
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。题解利用最大堆(时间复杂度nlogk)来解决,维护一个包含4个元素的最大堆,首先取待处理数组的前k个元素构成最大堆,然后遍历数组的剩余元素,若当前元素比最大堆的堆顶(最大的元素)小,则将当前元素与最大堆的堆顶互换,再重新生成新的最大堆。遍历完所有元素后所得的最大...
原创
2019-10-10 20:21:04 ·
115 阅读 ·
0 评论