91 前K个高频元素

news2025/1/23 9:13:38

前K个高频元素

    • 题解1 大根堆(STL)

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]

示例 2:
输入: nums = [1], k = 1
输出: [1]

提示:

  • 1 <= nums.length <= 1 0 5 10^5 105
  • k 的取值范围是 [1, 数组中不相同的元素的个数]
  • 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的

进阶:你所设计算法的时间复杂度 必须 优于 O ( n l o g n ) O(n log n) O(nlogn) ,其中 n 是数组大小。

题解1 大根堆(STL)

class Solution {
public:
	// 定义pair比较规则 
    struct cmp {
        bool operator()(const pair<int, int>& a, const pair<int, int>& b){
        return a.second > b.second;
        }
    };
    /** 或者
    // 解释一下为什么用static:传入的函数指针为void类型,如果不是static会默认带this指针,这样与void类型不匹配
    static bool cmp(pair<int, int>& m, pair<int, int>& n) {
        return m.second > n.second;
    }
    **/
    
    vector<int> topKFrequent(vector<int>& nums, int k) {
        priority_queue<pair<int, int>, vector<pair<int, int>>, cmp> pq;
        map<int, int> ff;
        vector<int> ret(k);
        // 记次数(也可以先排序)
        for(auto& i : nums){
            ff[i] ++;
        }
        // 同前K个最大值(只不过这次是比次数)
        for(auto& i : ff){
            pq.push(make_pair(i.first, i.second));
            if(pq.size() > k)
                pq.pop();
        }
		// 放回ret
        for(int i = 0; i < k; i++){
            ret[i] = pq.top().first;
            pq.pop();
        }
        return ret;

    }
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1162052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KADP应用加密组件实现数据动态脱敏 安当加密

动态脱敏是一种针对敏感数据进行数据抽取、数据漂白和动态掩码的专业数据脱敏技术。它通过在不动数据库中原始数据的前提下&#xff0c;依据用户的角色、职责和其他IT定义身份特征&#xff0c;动态的对生产数据库返回的数据进行专门的屏蔽、加密、隐藏和审计。可确保不同级别的…

双十一数码推荐什么?双十一选购攻略大全!实用数码产品推荐!

​在双十一这个购物狂欢节里&#xff0c;各大品牌和商家都会推出各种优惠活动&#xff0c;为消费者提供丰富的购物选择。在这个特殊的日子里&#xff0c;你是否也准备为自己或亲朋好友选购一些数码好物呢?本次推荐将为你精选一些值得购买的数码产品&#xff0c;让你在双十一这…

MATLAB和西门子SMART PLC OPC通信

西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章 Smart 200PLC PC Access SMART OPC通信_基于pc access smart的opc通信_RXXW_Dor的博客-CSDN博客文章浏览阅读2.7k次,点赞2次,收藏5次。OPC是一种利用微软COM/DCOM技术达成自动控制的协议,采用典型的C/S模式,针…

(01)Mycat说明与介绍

1、Mycat是什么 Mycat是一个数据库中间件&#xff0c;前身是阿里的cobar。 2、Mycat可以用来做什么 1.读写分离 2.数据分片 &#xff08;1&#xff09;垂直拆分 &#xff08;2&#xff09;水平拆分 &#xff08;3&#xff09;垂直水平拆分 3.多数据源整合 3、Mycat实现的…

前端出大事儿了

大家好&#xff0c;我是风筝 文章首发于 前端出大事儿了 最近这两天&#xff0c;在前端圈最火的图片莫过于下面这张了。 这是一段 React 代码&#xff0c;就算你完全没用过 React 也没关系&#xff0c;一眼看过去就能看到其中最敏感的一句代码&#xff0c;就是那句 SQL 。 咱…

Linux安装sysv-rc-conf报错:出现NO_PUBKEY...问题,急需安装证书的情况

Linux下安装MySQL时&#xff0c;出现一个使用chkconfig命令&#xff0c;但无该命令的情况&#xff01; chkconfig --add mysql # 出现chkconfig command not found于是就展开了一次替换的行动&#xff0c;将chkconfig替换为sysv-rc-conf 第一步&#xff1a; 尝试直接安装&am…

最新阿里云服务器优惠价格表,企鹅看了瑟瑟发抖!

今年2023年阿里云双十一优惠活动云服务器价格太低了&#xff0c;比腾讯云都便宜&#xff0c;轻量2核2G服务器3M带宽优惠价87元一年、2核4G4M带宽优惠价165元一年&#xff0c;云服务器ECS经济型e实例2核2G3M固定带宽优惠价格99元一年&#xff0c;还有2核4G、2核8G、4核8G、4核16…

Leetcode刷题---轮转数组

轮转数组 题目描述&#xff1a; Java中List是有序、可重复的单列集合&#xff0c;集合中的每个元素都有对应的顺序索引&#xff0c;我们可以通过该索引来访问指定位置上的集合元素。 思路&#xff1a; 首先选用list来存储中间结果。首先用k对n(数组长度)求余获取要移动的位数…

2023年【P气瓶充装】最新解析及P气瓶充装考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 P气瓶充装最新解析参考答案及P气瓶充装考试试题解析是安全生产模拟考试一点通题库老师及P气瓶充装操作证已考过的学员汇总&#xff0c;相对有效帮助P气瓶充装考试技巧学员顺利通过考试。 1、【多选题】LNG加气站有哪些…

手把手教你使用媲美人声的AI配音神器

1、找到微信小程序界面 2、搜索番茄AI配音&#xff0c;找到番茄AI配音图标&#xff0c;点击进入小程序 3、复制粘贴文本到最上方的界面 4、在选择主播的地方&#xff0c;选择自己喜欢的主播声音 5、然后点击制作语音图标&#xff0c;制作成功之后可以试听一下 6、觉得满意之后&…

台灯太亮会导致近视吗?精选高品质的台灯

台灯相信很多家庭都会备上一台&#xff0c;用于办公、休闲或者给孩子学习使用&#xff0c;如果使用的台灯亮度过高的话&#xff0c;可能会对视力造成一定的影响&#xff0c;尤其是夜晚的时候。建议是选择带有亮度调节功能的台灯会比较好一点&#xff0c;可以自行根据周围环境的…

Winclone pro v10.2(Boot Camp分区备份还原工具)

Winclone Pro 10是一款专为Mac用户设计的高级Windows系统备份和迁移工具。它提供了强大而易于使用的功能&#xff0c;让用户能够轻松地创建、克隆和还原Windows系统&#xff0c;并在Mac上运行。 Winclone Pro 10的主要特点包括&#xff1a; 完整的系统备份和还原&#xff1a;…

右击文件或者文件夹使用vscode打开

平常我们在打开项目时&#xff0c;经常会需要快捷打开方式&#xff0c;直接使右键使用编辑器打开&#xff0c;但是有时在安装时忘记了选择 “Add “Open with Code” action to Windows Explorer file context menu” 在Windows资源管理器文件上下文菜单中添加“用代码打开”操…

初识Vue 输出Hello World 及注意事项

在我们还没接触Vue之前&#xff0c;我同学常说我可以直接在元素里输出JS的表达式吗&#xff1f;肯定是不太行。当我们接触vue.js后&#xff0c;这个想法成了现实。 每当我们学习一门新的语言或者框架时&#xff0c;我们都习惯打印一个“hello world”&#xff0c;在我们vue当中…

找到数组中出现一种/两种奇数——异或运算

找到数组中出现一种/两种奇数 题目&#xff1a;一个数组有一种数出现了奇数次&#xff0c;其他数都出现了偶数次&#xff0c;怎么找到并打印这个数&#xff1f; trick 因为异或运算有个特点&#xff0c;满足交换律和结合律&#xff0c;同时有两个重要的特点&#xff1a; n^n…

页面淘汰算法模拟实现与比较

1.实验目标 利用标准C 语言&#xff0c;编程设计与实现最佳淘汰算法、先进先出淘汰算法、最近最久未使用淘汰算法、简单 Clock 淘汰算法及改进型 Clock 淘汰算法&#xff0c;并随机发生页面访问序列开展有关算法的测试及性能比较。 2.算法描述 1. 最佳淘汰算法&#xff08;Op…

Jenkins自动化部署相关shell命令

1. 只后台启动&#xff1a; nohup java -jar jar/demo*.jar & 2. 增加命令启动日志输出位置&#xff0c;防止超时处理配置&#xff1a; nohup java -jar /soft/gitee-demo-0.0.1-SNAPSHOT.jar >mylog.log 2>&1 & 简化写法&#xff1a; nohup java -jar /s…

CTF-RSA加密-1

RSA加密算法 RSA算法的具体描述如下&#xff1a; &#xff08;1&#xff09;任意选取两个不同的大素数p和q计算乘积 n p q npq npq &#xff0c; φ ( n ) ( p − 1 ) ( q − 1 ) φ(n)(p-1)(q-1) φ(n)(p−1)(q−1) &#xff1b; &#xff08;2&#xff09;任意选取一个大…

大数据之LibrA数据库系统告警处理(ALM-12010 Manager主备节点间心跳中断)

告警解释 当主Manager节点在7秒内没有收到备Manager节点的心跳信号时&#xff0c;产生该告警。 当主Manager节点收到备Manager节点的心跳信号后&#xff0c;告警恢复。 告警属性 告警参数 对系统的影响 如果主Manager进程异常&#xff0c;主备倒换无法进行&#xff0c;影响…

云主机VNC报错 fork:cannot allocate memory ,也无法SSH

查找解决办法,发现大部分都是因为现有的进程数超过系统设置最大进程数 开始排查: 1.重启系统然后SSH连接(刚启动进程少是可以连上的),查看系统设置的最大进程数: 1.1 执行以下命令,查看系统 pid_max 值。 sysctl -a | grep pid_max根据返回结果,进行对应操作: 返回…