- 问题描述:在无序的数组中查找最大(最小)的前K个元素?
例如:arr[] = {9,1,6,2,3,8,3,4,7,0}
最大的四个元素是6,7,8,9
思路:使用小堆,先将数组中的K个元素插入到堆中,然后再从第K个开始遍历数组,如果数组中的元素大于,堆顶元素,就将对顶元素pop,然后再将数组中的元素push进堆里面去
实现代码:
#include<iostream>
using namespace std;
#include<queue>
class compare{
public:
bool operator()(int a,int b){
return a > b;
}
};