当前位置: 首页 > news >正文

前k个高频元素

本文参考代码随想录

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]

  • 利用map对出现频率进行统计
  • 利用优先级队列对频率进行排序。priority_queue默认用大顶堆实现,但本题需要使用小顶堆,每次把堆中最小的元素弹出,剩下k个频率最高的元素。
class Solution {
public:class mycomparision{public:bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs){return lhs.second > rhs.second;}};vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int, int> map;for(int i = 0; i < nums.size(); i++){map[nums[i]]++;}priority_queue<pair<int, int>, vector<pair<int, int>>, mycomparision> pri_que;for(unordered_map<int, int>::iterator it = map.begin();it != map.end();it++){pri_que.push(*it);if(pri_que.size() > k){pri_que.pop();}}vector<int> result(k);for(int i = k - 1;i >= 0;i--){result[i] = pri_que.top().first;pri_que.pop();}return result;}
};

http://www.mrgr.cn/news/23546.html

相关文章:

  • 基于vue框架的城市交通管理系统的设计与实现9fcck(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • CSP-J 算法基础 排序算法的基本概念
  • 如何选择一款合适的高压功率放大器?
  • 【区块链通用服务平台及组件】浪潮云链区块链平台 | FISCO BCOS应用案例
  • SpringBoot 统⼀功能处理
  • Lua可变参数中的nil值处理
  • 【网上商城项目结构】
  • 【软件设计师真题】下午题第二大题---数据库设计
  • 【Python】排序算法及二叉树讲解(冒泡 选择 插入 二分查找 二叉树的广度优先和三种深度优先遍历方式)
  • 一文讲清投影,定义投影,投影栅格……
  • js 创建 React 项目
  • 关于在vue2中使用el-tree的记录
  • 【Redis】主从复制 - 源码
  • KingFusion|KingFusion客户端接入KingHistorian历史数据
  • 终于搞懂TS中的泛型啦! | typescript 入门指南 04
  • 基于SWAT-MODFLOW地表水与地下水耦合
  • 吐血整理nacos 作为springcloud的配置中心和注册中心
  • 序偶解释:李冬梅老师书线性表一章第一页
  • C++11中的std::bind的作用
  • 【Qt】Qt界面美化 | 绘画