免费php模板网站,邢台做网站,如何建站网站,工作室logo目录链接#xff1a;
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目#xff1a;
https://github.com/September26/java-algorithms 原题链接#xff1a;力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 描述#xff1a;
现有一个包…目录链接
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目
https://github.com/September26/java-algorithms 原题链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 描述
现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。
实现 SmallestInfiniteSet 类
SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int num) 如果正整数 num 不 存在于无限集中则将一个 num 添加 到该无限集最后。 示例
输入
[SmallestInfiniteSet, addBack, popSmallest, popSmallest, popSmallest, addBack, popSmallest, popSmallest, popSmallest]
[[], [2], [], [], [], [1], [], [], []]
输出
[null, null, 1, 2, 3, null, 1, 4, 5]解释
SmallestInfiniteSet smallestInfiniteSet new SmallestInfiniteSet();
smallestInfiniteSet.addBack(2); // 2 已经在集合中所以不做任何变更。
smallestInfiniteSet.popSmallest(); // 返回 1 因为 1 是最小的整数并将其从集合中移除。
smallestInfiniteSet.popSmallest(); // 返回 2 并将其从集合中移除。
smallestInfiniteSet.popSmallest(); // 返回 3 并将其从集合中移除。
smallestInfiniteSet.addBack(1); // 将 1 添加到该集合中。
smallestInfiniteSet.popSmallest(); // 返回 1 因为 1 在上一步中被添加到集合中// 且 1 是最小的整数并将其从集合中移除。
smallestInfiniteSet.popSmallest(); // 返回 4 并将其从集合中移除。
smallestInfiniteSet.popSmallest(); // 返回 5 并将其从集合中移除。 提示
1 num 1000最多调用 popSmallest 和 addBack 方法 共计 1000 次 解题思路
设置set为黑名单每次pop的时候检查set如果存在则寻找下一个不存在则使用当前 代码
class SmallestInfiniteSet {//黑名单SetInteger set;public SmallestInfiniteSet() {set new HashSet();}public int popSmallest() {int i 1;while (true) {if (set.contains(i)) {i;continue;}break;}set.add(i);return i;}public void addBack(int num) {set.remove(num);}
}