跳到主要内容

2336.无限集中的最小数字

链接:2336.无限集中的最小数字
难度:Medium
标签:设计、哈希表、堆(优先队列)
简介:现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。实现 SmallestInfiniteSet 类。

题解 1 - python

  • 编辑时间:2023-11-29
  • 执行用时:92ms
  • 内存消耗:16.58MB
  • 编程语言:python
  • 解法介绍:堆。
class SmallestInfiniteSet:
def __init__(self):
self.nmin = 1
self.q = []
self.used = set()
def popSmallest(self) -> int:
if not self.q:
self.nmin += 1
return self.nmin - 1
num = heappop(self.q)
self.used.remove(num)
return num
def addBack(self, num: int) -> None:
if self.nmin > num and num not in self.used:
heappush(self.q, num)
self.used.add(num)