LeetCode 刷题 [C++] 第347题.前 K 个高频元素

题目描述

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。在这里插入图片描述

题目分析

  1. 据题意可知,我们需要先遍历整个数组,并统计每个数字出现的次数,保存在哈希表中;
  2. 对元素出现次数进行排序,由于题中要求时间复杂度必须优于O(NlogN),且数组中的元素可能都不相同的情况;
  3. 因此,我们需要利用堆排序的思想进行排序,并需要一些处理:

首先建立一个小顶堆,然后开始遍历哈希表:
当堆中的元素个数小于K时,直接插入当前元素;
当堆中元素大于等于K时,比较堆顶和当前元素的大小,如果当前元素大,则弹出堆顶元素,并插入当前元素;反之,则舍弃当前元素;
遍历完后,堆中元素就是前K个出现频率最多的元素和出现的次数

  1. 遍历堆,取出需要的元素,保存到容器中返回。

Code

class Solution {
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> its_map;for (int num : nums) {its_map[num]++;}auto cmp = [](pair<int, int>& m, pair<int, int>& n) -> bool {return m.second > n.second;};priority_queue<pair<int,int>, vector<pair<int, int>>,decltype(cmp)> que(cmp);for (auto item : its_map) {if (k == que.size()) {if (que.top().second < item.second) {que.pop();que.emplace(item.first,item.second);}} else {que.emplace(item.first,item.second);}}vector<int> ans;ans.reserve(k);while (!que.empty()) {ans.emplace_back(que.top().first);que.pop();}return ans;}
};

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

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

相关文章

synchrosized 的可重入特性、死锁、哲学家就餐问题以及解决死锁的方法等干货

文章目录 &#x1f490;synchrosized的可重入特性关于死锁&#xff1a;哲学家就餐问题&#x1f4a1;如何避免/解决死锁 &#x1f490;synchrosized的可重入特性 可重入特性&#xff1a;当一个线程针对一个对象同时加锁多次&#xff0c;不会构成死锁&#xff0c;这样的特性称为…

前端学习第一天-html基础

达标要求 网页的形成过程 常用的浏览器及常见的浏览器内核 web 标准三层组成 什么是HTML 熟练掌握HTML文档结构 熟练掌握HTML常用标签 1. 初识web前端 Web前端是创建Web页面或App等前端界面呈现给用户的过程。 Web前端开发是从网页制作演变而来&#xff0c;早期网站主…

sklearn.preprocessing.RobustScaler(解释和原理,分位数,四分位差)

提示&#xff1a;sklearn.preprocessing.RobustScaler&#xff08;解释和原理&#xff0c;分位数&#xff0c;四分位差&#xff09; 文章目录 [TOC](文章目录) 一、RobustScaler 是什么&#xff1f;二、代码1.代码2.输出结果 总结 提示&#xff1a;以下是本篇文章正文内容&…

ELK学习

ELK 一、ELK介绍 &#x1f604; “ELK”是三个开源项目的首字母缩写&#xff0c;这三个项目分别是&#xff1a;Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道&#xff0c;能够同时从多个来源采集数据&#xff0…

网络编程(IP、端口、协议、UDP、TCP)【详解】

目录 1.什么是网络编程&#xff1f; 2.基本的通信架构 3.网络通信三要素 4.UDP通信-快速入门 5.UDP通信-多发多收 6.TCP通信-快速入门 7.TCP通信-多发多收 8.TCP通信-同时接收多个客户端 9.TCP通信-综合案例 1.什么是网络编程&#xff1f; 网络编程是可以让设…

Redis的事务

在 Redis 中&#xff0c;事务&#xff08;Transaction&#xff09;是一组命令的集合&#xff0c;可以作为一个单独的操作来执行&#xff0c;保证这组命令要么全部执行成功&#xff0c;要么全部执行失败&#xff0c;具有原子性。在 Redis 中&#xff0c;事务是通过 MULTI、EXEC、…

repo介绍和安装

介绍 https://blog.devwiki.net/2023/11/27/Windows-repo.html 安装&#xff1a; https://blog.csdn.net/ysy950803/article/details/104188793

网络安全-appcms-master

一、环境 gethub上面自己找appcms-master 二、开始闯关 原理&#xff1a;在评论的时候提交可以提交到管理员列表去&#xff0c;管理员一看cookie和地址就被盗走了 点进去软件后会发现提交按钮 随便提交一下看看 放到div标签里面是不是有可能可以做&#xff0c;看看后台吧 那…

初学者如何学习python

Python 作为当今最受欢迎的编程语言之一&#xff0c;已经被包括谷歌、优步、Instagram 等知名公司广泛采用于他们的应用程序开发。由于其易学易用的特性&#xff0c;Python 成为了编程初学者的首选语言。特别是在机器学习和数据科学领域&#xff0c;Python 的应用更是让它成为了…

VUE CLI3项目搭建 ESLint配置

VUE项目框架配置 一、工具准备 Node.js安装 安装方法&#xff1a;点击查看WebStorm安装 下载地址&#xff1a;点击查看 二、环境准备 镜像准备 1.查看代理&#xff1a;npm get registry 2.设置淘宝镜像 2.1临时使用. npm --registry https://registry.npm.taobao.org ins…

【电机仿真】空间矢量脉宽调制(SVPWM)算法与实现

前言 文章【电机仿真】永磁同步电机模型中所提及了PMSM数学模型&#xff0c;模型算法是电机控制的理论基础&#xff0c;但在实际控制中&#xff0c;需要将这两部分具象化。实际电机所需要的总是三相电流或者电压&#xff0c;控制对象为逆变器中的开关器件&#xff0c;我们需要将…

springboot基于web的音乐网站论文

音乐网站 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了音乐网站的开发全过程。通过分析音乐网站管理的不足&#xff0c;创建了一个计算机管理音乐网站的方案。文章介绍了音乐网站的系统分析部分&#xff0c…

114.龙芯2k1000-pmon(13)- 串口如何用

本文是讲原理图的部分&#xff0c;跟pmon的关系不大&#xff01;&#xff01; 参考手册&#xff1a;《龙芯2K1000处理器用户手册.pdf》 刚刚看数据手册&#xff0c;让我是有点惊讶&#xff0c;但是也让我迷惑。&#xff08;一个串口复用为4个是啥意思&#xff1f;&#xff09;…

Java项目:32 基于springboot的课程作业管理系统(含源码数据库+文档免费送)

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员&#xff1a;首页、个人中心、公告信息管理、班级管理、学生管理、教师管理、课程类型管理、课程信息管理、学生选课管理、作业布置管理…

CK98-数学家键盘配置

官方驱动和说明书下载地址 https://www.coolkiller.cn/download/lists_6.html 介绍&#xff1a;https://new.qq.com/rain/a/20221229A09B1M00 官方CK-98数学家驱动版本&#xff08;谨慎更新&#xff09; 如果升级驱动出现问题&#xff0c;重启驱动软件后会默认让你恢复的。 …

[蓝桥杯 2020 省 AB3] 日期识别

每日一道算法题之日期识别 一、题目描述二、思路三、C代码 一、题目描述 题目来源&#xff1a;洛谷 【蓝桥杯 2020 第三轮省赛 AB 组 F 题】小蓝要处理非常多的数据, 其中有一些数据是日期。 在小蓝处理的日期中有两种常用的形式&#xff1a;英文形式和数字形式。英文形式采用…

利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例

利用小蜜蜂AI智能问答ChatGPTAI高清绘图生成图文故事案例 这段时间利用小蜜蜂AI网站做了一些编程、绘图以及数据分析方面的案例。再过几个月&#xff0c;我的大孙子就要出生了。我要用小蜜蜂AI智能问答和AI高清绘图为大孙子生成一个1-9的数字图文故事。 小蜜蜂AI网站可以扫如…

程序项目打包发布方法,采用InstallShield软件

重点&#xff1a; 1.程序项目做出来了&#xff0c;需要打包发布给用户。如何打包是关键。 2.采用InstallShield软件进行发布。 步骤一&#xff1a;创建一个依赖三方库配置环境的bat文件的项目。 &#xff08;主要测试三方库打包 和如果有bat文件&#xff0c;需要先创建环境&…

读书笔记-三国演义-曹操

魏武帝曹操&#xff08;155年&#xff0d;220年&#xff09;&#xff0c;是中国东汉末年至三国时期的重要政治家、军事家和文学家&#xff0c;同时也是三国时期魏国的建立者。他以其雄才大略、果断机敏的领导才能以及卓越的军事才华而闻名于世。 生平 曹操出生于豫州谯县&…

C++STL排序原理简介

../chromedriver 一份简化的代码(可读性较强)一份简化的代码(可读性较强) 一份简化的代码(可读性较强) c 的sort用了很多年&#xff0c;一直不知道具体是怎么写的 决定看看代码&#xff0c;以下文章结构可能有点混乱&#xff0c;建议读者同时打开vs同步跳转 https://www.geeksf…