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

2023-11-29每日一题

一、题目编号

2336. 无限集中的最小数字

二、题目链接

点击跳转到题目位置

三、题目描述

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

实现 SmallestInfiniteSet 类:

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

示例:
2023-11-29 LeetCode每日一题(无限集中的最小数字)_第1张图片
提示:

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

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)