现有一个包含所有正整数的集合 [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可快速解决