凉山州规划和建设局网站,山西有哪些做网站的公司,手机网站开发软件下载,网站怎么做描文本题目 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。 实现 SmallestInfiniteSet 类#xff1a; SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int num) 如果正整数 n…题目 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。 实现 SmallestInfiniteSet 类 SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int num) 如果正整数 num 不 存在于无限集中则将一个 num 添加 到该无限集中。 解题思路
正整数是无限的所以需要存储的时被移除的数据通过使用Map来存储移除的数据移除无限集中的最小整数即Map中不存在的最小整数添加数据到无限集中即从Map中删除该数据。
代码展示
class SmallestInfiniteSet {MapInteger,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);}
}