2336. 无限集中的最小数字 --力扣 --JAVA

简介: 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。实现 SmallestInfiniteSet 类:SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int num) 如果正整数 num 不 存在于无限集中,则将一个 num 添加 到该无限集中。

 题目

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

实现 SmallestInfiniteSet 类:

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

    解题思路

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

      代码展示

      class SmallestInfiniteSet {
          Map<Integer,Integer> data = null;
          public SmallestInfiniteSet() {
              data = new TreeMap<>();
          }
          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);
          }
      }

      image.gif


      目录
      相关文章
      |
      2月前
      |
      算法 Java
      [Java·算法·简单] LeetCode 9. 回文数 详细解读
      [Java·算法·简单] LeetCode 9. 回文数 详细解读
      22 0
      |
      2月前
      |
      Java
      383. 赎金信 --力扣 --JAVA
      给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能c里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。
      22 1
      |
      10天前
      |
      Java
      LeetCode题解-逆波兰表达式求值-Java
      逆波兰表达式求值-Java
      7 0
      |
      10天前
      |
      Java
      |
      10天前
      |
      Java
      |
      10天前
      |
      Java
      LeetCode题解-二叉搜索树中第K小的元素-Java
      LeetCode题解-二叉搜索树中第K小的元素-Java
      6 0
      |
      10天前
      |
      Java
      |
      10天前
      |
      Java
      LeetCode题解- 两两交换链表中的节点-Java
      两两交换链表中的节点-Java
      7 0
      |
      10天前
      |
      Java
      LeetCode题解-合并K个有序数组-Java
      合并K个有序数组-Java
      5 0
      |
      10天前
      |
      Java

      相关产品

    1. 云迁移中心