#1516. set模板题
set模板题
题目描述
现有一个集合(Set)容器,支持以下操作:插入元素、删除元素、查询元素存在性和统计元素数量。你需要实现这个集合,并处理可能的边界情况。具体规则如下:
- 插入操作:向集合中插入一个元素。若元素已存在,则操作无效。
- 删除操作:从集合中删除指定元素。若元素不存在,则操作无效。
- 查询操作:检查集合中是否存在指定元素。
- 统计操作:返回集合中元素的数量。
操作完成后,需输出最终集合的元素个数及所有元素(按升序排列)。
输入格式
- 第一行输入一个整数
q(1 ≤ q ≤ 1000000),表示操作的总次数。 - 接下来
q行,每行表示一次操作,格式如下:- 插入操作:
1 x(插入元素x)。 - 删除操作:
2 x(删除元素x)。 - 查询操作:
3 x(查询元素x是否存在)。 - 统计操作:
4(返回当前集合元素个数)。
- 插入操作:
输出格式
- 对于每次查询操作(操作3),输出一行:
- 若元素存在,输出
YES; - 若元素不存在,输出
NO。
- 若元素存在,输出
- 对于每次统计操作(操作4),输出一行整数,表示当前集合的元素个数。
- 所有操作完成后,输出两行:
- 第一行:一个整数,表示集合的元素个数。
- 第二行:集合的所有元素,按升序排列,元素之间用空格分隔。若集合为空,输出空行。
样例 1 输入
5
1 10
1 20
3 20
2 10
3 10
样例 1 输出
YES
NO
1
20
样例说明
- 插入操作:依次插入10和20,集合变为
{10, 20}。 - 查询操作:查询20,存在,输出
YES。 - 删除操作:删除10,集合变为
{20}。 - 查询操作:查询10,不存在,输出
NO。 - 最终输出:集合元素个数为1,元素为20。
测试点约束
- 操作次数
q ≤ 1000000。 - 元素值
x的取值范围为int(-2^31 ~ 2^31-1)。
提示
- 唯一性:集合中不允许存在重复元素。
- 有序性:输出元素时需按升序排列。
- 高效实现:插入、删除和查询操作的时间复杂度应为O(log n)。