LeetCode #2336: Smallest Number in Infinite Set
β’ 99 words β’ 1 min
LeetCode #2336: Smallest Number in Infinite Set:
python
class SmallestInfiniteSet:
def __init__(self):
self.removed = set()
def popSmallest(self) -> int:
if not self.removed:
self.removed.add(1)
return 1
n = len(self.removed)
t = set(range(1, n + 2))
m = min(t - self.removed)
self.removed.add(m)
return m
## t - self.removed
##
## {1, 2, 3, 4} - {1, 2, 3}
##
## or
##
## {1, 2, 3} - {2, 4}
def addBack(self, num: int) -> None:
if num in self.removed:
self.removed.remove(num)
# Your SmallestInfiniteSet object will be instantiated and called as such:
# obj = SmallestInfiniteSet()
# param_1 = obj.popSmallest()
# obj.addBack(num)