现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...]
。
实现 SmallestInfiniteSet
类:
SmallestInfiniteSet()
初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest()
移除 并返回该无限集中的最小整数。void addBack(int num)
如果正整数num
不 存在于无限集中,则将一个num
添加 到该无限集最后。
思路一:利用stl中set存放,利用其特性实现
c++解法
class SmallestInfiniteSet {
private:
set<int> s;
public:
SmallestInfiniteSet() {
for (int i = 1; i < 1001; ++i) {
s.insert(i);
}
}
int popSmallest() {
int res = *s.begin();
s.erase(s.begin());
return res;
}
void addBack(int num) {
s.insert(num);
}
};
分析:
题中要实现初始化,移除最小整数,添加正整数三个方法,利用erase,insert可快速实现相关方法
总结:
本题考察对stl集合的掌握,利用set可快速解决