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即可。