type
status
date
slug
summary
tags
category
icon
password
创建时间
Jul 4, 2025 12:33 AM
现有一个包含所有正整数的集合
[1, 2, 3, 4, 5, ...] 。实现
SmallestInfiniteSet 类:SmallestInfiniteSet()初始化 SmallestInfiniteSet 对象以包含 所有 正整数。
int popSmallest()移除 并返回该无限集中的最小整数。
void addBack(int num)如果正整数num不 存在于无限集中,则将一个num添加 到该无限集中。
五、堆(优先队列)§5.1 基础
题目有范围限制,直接初始化所有元素
在不提供范围限制的情况下的做法
参考 宫水三叶
没有提供范围限制后,我们无法将所有的元素加入到优先队列中(堆),也就是上面的做法是不可行的。
这时候,我们创建一个变量
idx,用于表示我们当前已经弹出的元素(左边界)。考虑当调用
addBack 往集合添加数值 x 时x >= idx:在范围中,添加时无法重复添加
x < idx:将元素x放入堆中,并在pop时弹出最小值
此外,在插入元素时,我们还需要进行判重处理。