2336.无限集中的最小数字

  • thr 维护无限集合中的最小值
  • set 维护插入数据,也即无限集合前段被删除的部分
  • set 中为空,即无限集合前半段为空,最小值为 thr
  • set 不为空,最小值为set 首个元素
  • 插入时,小于thr 则插入到set 中,set 自动去重
class SmallestInfiniteSet {
private:
    int thr = 1;
    set<int> nums;
public:
    SmallestInfiniteSet() {
    }
    int popSmallest() {
        if(nums.empty())
        {
            int tmp = thr++;
            return tmp;
        }
        int tmp = *nums.begin();
        nums.erase(nums.begin());
        return tmp;
    }
    void addBack(int num) {
        if(num < thr)
            nums.insert(num);
    }
};

你可能感兴趣的:(leetcode)