有一个域名做网站,淄博做网站公司,小程序开发需要多少钱?,软件研发项目管理系统题目描述 给你一个整数数组 nums 和一个整数 k #xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 解题思想 使用优先队列 priority_queueType, Container, Functional Type 就是数据类型#xff0c;Container 就是容器类型#xff08;C…题目描述 给你一个整数数组 nums 和一个整数 k 请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 解题思想 使用优先队列 priority_queueType, Container, Functional Type 就是数据类型Container 就是容器类型Container必须是用数组实现的容器比如vector,deque等等但不能用 list。STL里面默认用的是vectorFunctional 就是比较的方式当需要用自定义的数据类型时才需要传入这三个参数使用基本数据类型时只需要传入数据类型默认是大顶堆
//升序队列
priority_queue int,vectorint,greaterint q;
//降序队列
priority_queue int,vectorint,lessint q;//greater和less是std实现的两个仿函数
//就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator()这个类就有了类似函数的行为就是一个仿函数类了代码
class Solution {
public:class cmp{public:bool operator()(const pairint,int l, const pairint,int r){return l.second r.second;}};vectorint topKFrequent(vectorint nums, int k) {unordered_mapint,int umap;for(int i 0; i nums.size(); i){umap[nums[i]];}priority_queuepairint, int, vectorpairint, int, cmp pri_que;for(auto it umap.begin(); it ! umap.end(); it){pri_que.push(*it);if(pri_que.size() k) pri_que.pop();}vectorint res(k);for(int i 0; i k; i){res[i] pri_que.top().first;pri_que.pop();}return res;}
};