LeetCode 347. 前 K 个高频元素(哈希/优先队列)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 哈希
      • 2.2 优先队列

1. 题目

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。

示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]示例 2:
输入: nums = [1], k = 1
输出: [1]
说明:
你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。
你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/top-k-frequent-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 哈希

class Solution {
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> m;vector<int> ans;for(int num:nums)m[num]++;vector<pair<int,int>> v(m.begin(), m.end());//map不支持排序,转成vectorsort(v.begin(), v.end(),[](pair<int,int> &a, pair<int,int> &b){return a.second > b.second;});	//新的比较函数写法auto it = v.begin();while(k--){ans.push_back(it->first);++it;}return ans;}
};

在这里插入图片描述

2.2 优先队列

class Solution {struct cmp//必须写struct,不能写class{bool operator()(pair<int, int>& a, pair<int, int>& b){ return a.second > b.second; }//小顶堆};
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> m;vector<int> ans;for(int num:nums)m[num]++;priority_queue<pair<int,int>,vector<pair<int,int>>, cmp> q;for(auto a:m){q.push(a);if(q.size() > k)q.pop();}while(!q.empty()){ans.push_back(q.top().first);q.pop();}return ans;}
};

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

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

相关文章

Lego-美团接口自动化测试实践

一、概述 1.1 接口自动化概述 众所周知&#xff0c;接口自动化测试有着如下特点&#xff1a; 低投入&#xff0c;高产出。比较容易实现自动化。和UI自动化测试相比更加稳定。如何做好一个接口自动化测试项目呢&#xff1f; 我认为&#xff0c;一个“好的”自动化测试项目&#…

小程序调试技术详解(基于小猴小程序)

本篇文章主要围绕小猴小程序调试技术第三版进行展开。 在上一篇导读文章中提到&#xff0c;小猴小程序的调试部分从无到有一共经历了3个版本。本篇文章会详细描述面向开发者的调试功能是如何实现的。 文章将会描述以下部分&#xff1a; 调试实现的基本通信关系结构。如何实现…

论文浅尝 - CIKM2020 | 用于推荐系统的多模态知识图谱

论文笔记整理&#xff1a;王琰&#xff0c;东南大学硕士。来源&#xff1a;CIKM 2020链接&#xff1a;https://doi.org/10.1145/3340531.3411947研究背景与任务描述为了解决推荐系统中的数据稀疏和冷启动问题&#xff0c;研究人员通过利用有价值的外部知识作为辅助信息&#xf…

FedNLP: 首个联邦学习赋能NLP的开源框架,NLP迈向分布式新时代

文 | 阿毅两周前&#xff0c;南加大Yuchen Lin&#xff08;PhD student USC and ex-research intern GoogleAI)所在的团队在Twitter官宣开源首个以研究为导向的联邦学习赋能NLP的FedNLP框架。发布数小时内就获得了647个赞&#xff0c;163次转发&#xff0c;可见其热度。我相信大…

LeetCode 380. 常数时间插入、删除和获取随机元素(哈希+vector)

1. 题目 设计一个支持在平均 时间复杂度 O(1) 下&#xff0c;执行以下操作的数据结构。 insert(val)&#xff1a;当元素 val 不存在时&#xff0c;向集合中插入该项。 remove(val)&#xff1a;元素 val 存在时&#xff0c;从集合中移除该项。 getRandom&#xff1a;随机返回现…

论文浅尝 - ICLR2020 | 知识图谱中数值规则的可微学习

论文笔记整理&#xff1a;许泽众&#xff0c;浙江大学博士研究生。研究方向&#xff1a;知识图谱&#xff0c;规则挖掘等。论文链接&#xff1a;https://openreview.net/pdf?idrJleKgrKwS本文解决的是规则的学习问题&#xff0c;学习出来的规则可用于知识推理任务&#xff0c;…

2021大厂面试高频100题最新汇总(附答案详解)

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…

LeetCode 33. 搜索旋转排序数组(二分查找)

1. 题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如&#xff0c;数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值&#xff0c;如果数组中存在这个目标值&#xff0c;则返回它的索引&#xff0c;否则返回 -1 。 你可以假设数…

论文浅尝 - EMNLP2020 | 低资源跨语言实体链接中的设计挑战

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;EMNLP 2020链接&#xff1a;https://arxiv.org/pdf/2005.00692.pdf1.背景介绍跨语言实体链接&#xff08;XEL&#xff09;旨在将任一非英语文本中的实体提及匹配到英语知识库上&#xff08;例如Wikip…

MSON,让JSON序列化更快

问题 我们经常需要在主线程中读取一些配置文件或者缓存数据&#xff0c;最常用的结构化存储数据的方式就是将对象序列化为JSON字符串保存起来&#xff0c;这种方式特别简单而且可以和SharedPrefrence配合使用&#xff0c;因此应用广泛。但是目前用到的Gson在序列化JSON时很慢&a…

屠榜各大CV任务!「百度顶会论文复现营」携Swin Transformer来袭!

目标检测刷到58.7 AP&#xff01;实例分割刷到51.1 Mask AP&#xff01;&#xff01;语义分割在ADE20K上刷到53.5 mIoU&#xff01;&#xff01;&#xff01;......Swin Transformer持续屠榜各大CV任务&#xff0c;并且均名列前茅&#xff01;通过分层体系结构&#xff0c;带来…

百度任务型对话系统小记

意图扩展阅读&#xff1a; 古月哲亭: AAAI 2021 | 清华提出深度对齐聚类用于新意图发现&#xff1a;https://mp.weixin.qq.com/s/9dNs8TTERPdxmrVc3tF1zw 相关项目地址&#xff1a;https://github.com/thuiar/OKD-Reading-List 古月哲亭: 意图知识图谱的构建与应用&#xff1a…

论文浅尝 - EMNLP2020 | 跨媒体关键词预测: 多模态多头注意力和图像文本的统一框架...

论文笔记整理&#xff1a;柏超宇&#xff0c;东南大学硕士。文章链接&#xff1a;https://arxiv.org/pdf/2011.01565.pdf来源&#xff1a;EMNLP 2020动机社交媒体每天都会产生大量的内容。为了帮助用户快速捕捉所需内容&#xff0c;关键词预测受到越来越多的关注。尽管如此&…

从实际案例聊聊Java应用的GC优化

当Java程序性能达不到既定目标&#xff0c;且其他优化手段都已经穷尽时&#xff0c;通常需要调整垃圾回收器来进一步提高性能&#xff0c;称为GC优化。但GC算法复杂&#xff0c;影响GC性能的参数众多&#xff0c;且参数调整又依赖于应用各自的特点&#xff0c;这些因素很大程度…

LeetCode 162. 寻找峰值(二分查找)

1. 题目 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums&#xff0c;其中 nums[i] ≠ nums[i1]&#xff0c;找到峰值元素并返回其索引。 数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个峰值所在位置即可。 你可以假设 nums[-1] n…

谷歌:CNN击败Transformer,有望成为预训练界新霸主!LeCun却沉默了...

文 | ????????????????这几年&#xff0c;大家都说深度学习进入了预训练时代。作为一个入行不久的小白&#xff0c;我一直以为各类基于 Transformers 结构的预训练模型是 NLP 的巨大里程碑&#xff0c;CNN、RNN 老矣&#xff0c;只配作为手下败将。大家的文章似…

新词发现简介

原文链接&#xff1a;https://blog.csdn.net/weixin_43378396/article/details/103848628 新词发现是 NLP 的基础任务之一&#xff0c;通过对已有语料进行挖掘&#xff0c;从中识别出新词。新词发现也可称为未登录词识别&#xff0c;严格来讲&#xff0c;新词是指随时代发展而新…

论文浅尝 - AAAI2020 | 利用自然语言推断生成人称一致的对话

链接&#xff1a; https://arxiv.org/pdf/1911.05889.pdf动机虽然最近几年通过利用社交网络上大量人人交互数据训练开放域对话模型取得了很大的成功&#xff0c;但是这些数据驱动的对话系统仍然无法很自然的与人类对话&#xff0c;其中的一个主要问题就是对话系统缺乏一致的角色…

智能投放系统之场景分析最佳实践

美团点评作为业内最大的O2O的平台&#xff0c;以短信/push作为运营手段触达用户的量级巨大&#xff0c;每日数以千万计。 美团点评线上存在超过千万的POI&#xff0c;覆盖超过2000城市、2.5万个后台商圈。在海量数据存在的前提下&#xff0c;实时投放的用户在场景的选择上存在一…