LeetCode 895. 最大频率栈(哈希+按频数存储)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

实现 FreqStack,模拟类似栈的数据结构的操作的一个类。

FreqStack 有两个函数:

  • push(int x),将整数 x 推入栈中。
  • pop(),它移除并返回栈中出现最频繁的元素。
    如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。
示例:
输入:
["FreqStack","push","push","push","push","push","push","pop","pop","pop","pop"],
[[],[5],[7],[5],[7],[4],[5],[],[],[],[]]
输出:[null,null,null,null,null,null,null,5,7,5,4]
解释:
执行六次 .push 操作后,栈自底向上为 [5,7,5,7,4,5]。然后:pop() -> 返回 5,因为 5 是出现频率最高的。
栈变成 [5,7,5,7,4]。pop() -> 返回 7,因为 57 都是频率最高的,但 7 最接近栈顶。
栈变成 [5,7,5,4]。pop() -> 返回 5 。
栈变成 [5,7,4]。pop() -> 返回 4 。
栈变成 [5,7]。提示:
对 FreqStack.push(int x) 的调用中 0 <= x <= 10^9。
如果栈的元素数目为零,则保证不会调用  FreqStack.pop()。
单个测试样例中,对 FreqStack.push 的总调用次数不会超过 10000。
单个测试样例中,对 FreqStack.pop 的总调用次数不会超过 10000。
所有测试样例中,对 FreqStack.push 和 FreqStack.pop 的总调用次数不会超过 150000

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

2. 解题

  • 哈希表1记录每个数的频数
  • 哈希表2记录频数下,对应有哪些元素,value为栈,保证出栈时是靠近栈顶的
  • 记录最大频数,实现O(1)查找
class FreqStack {unordered_map<int,int> freq;//num,frequnordered_map<int, stack<int>> stk;//freq,栈,一个数有这个频数时,存入int maxfreq = 0;//最大频数int x;
public:FreqStack() {}void push(int x) {freq[x]++;maxfreq = max(maxfreq, freq[x]);stk[freq[x]].push(x);}int pop() {x = stk[maxfreq].top();freq[x]--;stk[maxfreq].pop();if(stk[maxfreq].empty())maxfreq--;return x;}
};

420 ms 77.8 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

七年级上册计算机重点知识点,初一上册数学重点知识点

为了方便大家更好的学习和复习初一上册数学课本内容&#xff0c;现将初一上册数学重要内容整理分享出来。有理数重点知识点(1)定义&#xff1a;由整数和分数组成的数。包括&#xff1a;正整数、0、负整数&#xff0c;正分数、负分数。可以写成两个整之比的形式。(2)数轴&#x…

友元关系

友元关系转载于:https://www.cnblogs.com/LoveFishC/archive/2012/08/01/3846663.html

猪八戒背媳妇用计算机弹出来,猪八戒背媳妇?杭城游泳馆爆笑一幕:浙大学霸果然机智!...

游泳有时候不光比速度&#xff0c;还得比机智。6月19日&#xff0c;2021年“三好杯”游泳比赛在浙大紫金港校区游泳馆举行。这场比赛浙大各院系(学院)共有23支代表队、近220名运动员参赛。游泳项目是浙大的招牌项目之一&#xff0c;前不久的全国大学生阳光组(普通生)游泳比赛中…

html5支持多线程,html5 多线程

html5 多线程版本&#xff1a;HTML5运行者 Worker 接口是Web Workers API 的一部分&#xff0c;代表一个后台任务&#xff0c;它容易被创建并向创建者发回消息。创建一个运行者只要简单的调用Worker()构造函数&#xff0c;指定一个脚本&#xff0c;在工作线程中执行。运行者能够…

magento tab(easy tables)标签应用

我介绍的主要是magento 1.7.0.2版本。 因为彼人刚接触magento一星期&#xff0c;了解有限&#xff0c;理解有误的地方 还请多多包含。 easy tables 在1.7.0.2版本中&#xff0c;默认是在app/design/frontend/default/modern/layout/template/catalog.xml; 让我们先找到这个文件…

LeetCode 269. 火星词典(拓扑排序)

文章目录1. 题目2. 解题1. 题目 现有一种使用字母的全新语言&#xff0c;这门语言的字母顺序与英语顺序不同。 假设&#xff0c;您并不知道其中字母之间的先后顺序。 但是&#xff0c;会收到词典中获得一个 不为空的 单词列表。 因为是从词典中获得的&#xff0c;所以该单词列…

南工大计算机学院,江南-欢迎访问湖北工业大学计算机学院官方网站

科研情况介绍(研究方向、研究课题、现正进行的科研项目)研究方向&#xff1a;计算机软件与理论。近3年来主要个人成果、参加学术团体及社会兼职情况&#xff1a;1、机械化定理证明研究综述.第一作者.软件学报. 20192、mJava到Micro-Dalvik虚拟机的编译验证.第一作者.电子学报20…

邻接表的两种实现(链表和数组模拟)

struct node {int v; //边的结束顶点 int w; //边的长度node* next; //指向以同一起点的下一条边的指针 }*first[N]; //first[u]指向以u为起始点的第一条边 void init() {memset(first,NULL,sizeof(first)); } void add(int u, int v, int w)//添加边 {node* p new node;p->…

LeetCode 301. 删除无效的括号(回溯)

文章目录1. 题目2. 解题1. 题目 删除最小数量的无效括号&#xff0c;使得输入的字符串有效&#xff0c;返回所有可能的结果。 说明: 输入可能包含了除 ( 和 ) 以外的字符。 示例 1: 输入: "()())()" 输出: ["()()()", "(())()"]示例 2: 输入:…

计算机程序专利实用新型,涉及计算机程序的实用新型专利保护的思考

随着信息技术的不断发展&#xff0c;与计算机程序相关的计算机技术以及通信技术渗透到各个领域&#xff0c;越来越多的专利涉及了与计算机程序相关的技术。那么&#xff0c;是否包含计算机程序的相关专利申请都不能被授予实用新型专利权呢&#xff1f;本文从一件复审案例出发&a…

javascript数组去重方法性能测试比较

昨天参加的一个前端面试&#xff0c;其中有一题数组去重&#xff0c;首先想到的是对象存键值的方法&#xff0c;代码如下 方法一&#xff1a;&#xff08;简单存键值&#xff09; Array.prototype.distinct1 function() {var i0,tmp{},thatthis.slice(0)this.length0;for(;i&l…

LeetCode 428. 序列化和反序列化 N 叉树(DFS)

文章目录1. 题目2. 解题1. 题目 序列化是指将一个数据结构转化为位序列的过程&#xff0c;因此可以将其存储在文件中或内存缓冲区中&#xff0c;以便稍后在相同或不同的计算机环境中恢复结构。 设计一个序列化和反序列化 N 叉树的算法。 一个 N 叉树是指每个节点都有不超过 N…

计算机进入休眠状态后,Win7电脑进入休眠状态后又自动重启该怎么处理

在使用win7系统的时候&#xff0c;有的小伙伴遇到了一个莫名其妙的问题&#xff1a;当电脑进入休眠状态后却突然自动重启了&#xff0c;那么这是怎么一回事呢&#xff1f;又该如何解决呢&#xff1f;别着急&#xff0c;接下来&#xff0c;小编就给大家分享一下Win7电脑进入休眠…

Syslistview32+Systreeview32系统操作动态链接库和实际的商业化

Syslistview32和Systreeview32 是两个极其常用的系统控件&#xff0c;一个是列表控件&#xff0c;一个是树形框&#xff0c;只要能随意操控这两个控件就能够从外部控制住大多应用到这两个控件的软件。 一开始是想要控制VS平台的列表框来操作自动进房间&#xff0c;但是苦于没有…

LeetCode 325. 和等于 k 的最长子数组长度(哈希表记录第一次出现的状态)

文章目录1. 题目2. 解题1. 题目 给定一个数组 nums 和一个目标值 k&#xff0c;找到和等于 k 的最长子数组长度。 如果不存在任意一个符合要求的子数组&#xff0c;则返回 0。 注意: nums 数组的总和是一定在 32 位有符号整数范围之内的。 示例 1: 输入: nums [1, -1, 5, -…

测试网上哪款软件最好,手机测试软件哪款好用?4款测试软件推荐

手机强不强测试上见真章&#xff01;不服测个试呗&#xff01;虽不能代表作手机的品质&#xff0c;但可以直观的反馈出手机硬件性能。通过专业的手机测试软件可以对手机硬件进行评分&#xff0c;了解手机每个硬件性能情况。鲁大师&#xff1a;《鲁大师》是一款支持Android、平板…

Android4开发入门经典 之 第七部分:数据存储

数据存储基本知识 Android系统提供了多种数据存储的方式&#xff0c;如下&#xff1a; 1&#xff1a;Shared Preferences&#xff1a;用来存储私有的、原始类型的、简单的数据&#xff0c;通常是Key-value对2&#xff1a;Internal Storage&#xff1a;在设备内部存储器中存储数…

LeetCode 218. 天际线问题(multiset优先队列)*

文章目录1. 题目2. 解题1. 题目 城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。 现在&#xff0c;假设您获得了城市风光照片&#xff08;图A&#xff09;上显示的所有建筑物的位置和高度&#xff0c;请编写一个程序以输出由这些建筑物形成的天际线&#x…

计算机显示器性能指标的是,简述显示器的主要性能指标

1&#xff0e;分辨率&#xff1a;LCD的分辨率与CRT显示器不同&#xff0c;一般不能任意调整&#xff0c;它是制造商所设置和规定的。分辨率是指屏幕上每行有多少像素点、每列有多少像素点&#xff0c;一般用矩阵行列式来表示&#xff0c;其中每个像素点都能被计算机单独访问。现…

LeetCode 277. 搜寻名人(思维题)

文章目录1. 题目2. 解题2.1 暴力解2.2 高效解1. 题目 假设你是一个专业的狗仔&#xff0c;参加了一个 n 人派对&#xff0c;其中每个人被从 0 到 n - 1 标号。 在这个派对人群当中可能存在一位 “名人”。 所谓 “名人” 的定义是&#xff1a;其他所有 n - 1 个人都认识他/她&…