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

【LeetCode75】第五十题 无限集中的最小数字

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

这是我们在LeetCode75里遇到的第二道设计类题目,难度比上一次的设计题目要难上一些。

题目假设我们拥有一个从1开始的无限集。

设计的这个类有两个调用函数,一个让我们将无限集中最小的数移出并返回,另一个函数让我们再将一个不在无限集里的数添加会无限集里。

那么题目有给出条件,重新加回无限集的数不会大于100,并且调用次数的总和不会超过1000次。

那么我们可以直接拿一个数组来存放1000个数字来模拟无限集,因为就算1000次调用的都是移除最小值,那么1000个数字也是刚好够移除的。

不过这仅仅是理论可行,因为直接模拟的话,是会超时的。

我们可以逆向思考一下,我们不存放存在无限集的数字,我们存放被移出无限集的数字。

并且我们使用set来存放,这样每次移除最小数的时候,我们从1开始寻找set,如果数字不在set里,那么我们就把数字加入到set里来表示这个数被我们移除了。

添加回无限集的时候就更简单了,我们直接寻找要添加的数在不在我们的set里,如果在,我们就把set里的这个数字移除来表示添加回无限集里,因为set里存放的是被移出无限集的数,这样可能有点绕,大家结合着下面的代码再捋一捋。

代码:

class SmallestInfiniteSet {
public:unordered_set<int>jihe; //存放的实际上是被移出无限集的元素SmallestInfiniteSet() {}int popSmallest() {int i=1;while(jihe.find(i)!=jihe.end()){    //从1开始寻找没有被移出无限集的数,第一个找到的就是最小数i++;}jihe.insert(i); //找到之后插入set表示该数被移出无限集return i;}void addBack(int num) {//如果该数在set里,也就是被无限集移出了,那么我们再将其移出set表示重新加回无限集里if(jihe.find(num)!=jihe.end()){ jihe.erase(num);}}
};

http://www.lryc.cn/news/160177.html

相关文章:

  • 关于 Unity 连接 MuMu 模拟器上的 Unity Remote 5 的方法
  • OpenCV 02(色彩空间)
  • 【动手学深度学习】--循环神经网络
  • 快捷支付是什么?怎么申请支付接口?
  • 【MySQL】数据库基础知识
  • 算法训练day36|贪心算法 part05(重叠区间三连击:LeetCode435. 无重叠区间763.划分字母区间56. 合并区间)
  • [Android] AndroidManifest.xml 详解
  • idea远程debug调试
  • 离散化,树状数组,P5459 [BJOI2016] 回转寿司
  • 论文复现--VideoTo3dPoseAndBvh(视频转BVH和3D关键点开源项目)
  • JS 检查某个值是否为某个类的实例
  • 生动理解深度学习精度提升利器——测试时增强(TTA)
  • Redis基础知识(四):使用redis-cli命令测试状态
  • 【web开发】4、JavaScript与jQuery
  • 关于el-date-picker组件修改输入框以及下拉框的样式
  • JSCPC f ( 期望dp
  • Django(10)-项目实战-对发布会管理系统进行测试并获取测试覆盖率
  • ABB机器人10106故障报警(维修时间提醒)的处理方法
  • 性能测试 —— 吞吐量和并发量的关系? 有什么区别?
  • Fastjson反序列化漏洞
  • AI 帮我写代码——Amazon CodeWhisperer 初体验
  • 实训笔记9.1
  • 汽车SOA架构
  • L1-017 到底有多二 C++解法
  • motionface respeak视频一键对口型
  • LeetCode——顺时针打印矩形
  • C语言课程作业
  • Yolov8魔术师:卷积变体大作战,涨点创新对比实验,提供CVPR2023、ICCV2023等改进方案
  • 基于小波神经网络的空气质量预测,基于小波神经网络的PM2.5预测,基于ANN的PM2.5预测
  • Vue / Vue CLI / Vue Router / Vuex / Element UI