题目

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

实现 SmallestInfiniteSet 类:

解题思路

  1. 整数是无限的所以,需要存储的时被移除数据
  2. 通过使用Map来存储移除的数据;
  3. 移除无限集中的最小整数即Map中不存在最小整数;
  4. 添加数据到无限集中,即从Map删除该数据。

代码展示

class SmallestInfiniteSet {
    Map<Integer,Integer&gt; data = null;
    public SmallestInfiniteSet() {
        data = new TreeMap<&gt;();
    }

    public int popSmallest() {
        int index = 1;
        while (index <= data.size()){
            if(!data.containsKey(index)){
                break;
            }
            index++;
        }
        data.put(index, index);
        return index;
    }

    public void addBack(int num) {
        data.remove(num);
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注