ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

2023-11-29 LeetCode每日一题(无限集中的最小数字)

2026/8/16 13:09:00 拓冰建站 浏览量
2023-11-29 LeetCode每日一题(无限集中的最小数字)

2023-11-29每日一题

一、题目编号

2336. 无限集中的最小数字

二、题目链接

点击跳转到题目位置

三、题目描述

现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, …] 。

实现 SmallestInfiniteSet 类:

  • SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。
  • int popSmallest() 移除 并返回该无限集中的最小整数。
  • void addBack(int num) 如果正整数 num 存在于无限集中,则将一个 num 添加 到该无限集最后。

示例:
在这里插入图片描述
提示:

  • 1 <= num <= 1000
  • 最多调用 popSmallest 和 addBack 方法 共计 1000 次

四、解题代码

class SmallestInfiniteSet {set<int> S;
public:SmallestInfiniteSet() {for(int i = 1; i <= 1000; ++i){S.insert(i);}}int popSmallest() {auto iter = S.begin();int v = *iter;S.erase(iter);return v;}void addBack(int num) {if(S.find(num) == S.end()){S.insert(num);}}
};/*** Your SmallestInfiniteSet object will be instantiated and called as such:* SmallestInfiniteSet* obj = new SmallestInfiniteSet();* int param_1 = obj->popSmallest();* obj->addBack(num);*/

五、解题思路

(1) 使用C++中自带的有序集合Set即可。