
import java.util.*; public class Main { static TreeSetInteger ts new TreeSet(); public static void insertValue(int x) { ts.add(x); } public static void eraseValue(int x) { ts.remove(x); } public static boolean xInSet(int x) { // TODO: 实现存在性检查 boolean res ts.contains(x); return res; } public static int sizeOfSet() { // TODO: 返回集合大小 return ts.size(); } public static int getPre(int x) { // TODO: 实现找前驱 Integer pre ts.lower(x); return pre ! null ? pre : Integer.valueOf(-1); } public static int getBack(int x) { Integer bac ts.higher(x); return bac ! null ? bac : Integer.valueOf(-1); } public static void main(String[] args) { Scanner scanner new Scanner(System.in); int q scanner.nextInt(); while (q-- 0) { int op scanner.nextInt(); switch (op) { case 1: insertValue(scanner.nextInt()); break; case 2: eraseValue(scanner.nextInt()); break; case 3: System.out.println(xInSet(scanner.nextInt()) ? YES : NO); break; case 4: System.out.println(sizeOfSet()); break; case 5: System.out.println(getPre(scanner.nextInt())); break; case 6: System.out.println(getBack(scanner.nextInt())); break; } } scanner.close(); } }描述您需要动态地维护一个初始为空的集合 MM并且支持以下操作∙ ∙操作 11向集合 MM 中插入一个数 xx如果 xx 在集合 MM 中已经存在则忽略本次操作。∙ ∙操作 22从集合 MM 中删除一个数 xx如果 xx 不在集合 MM 中则忽略本次操作。∙ ∙操作 33查询一个数 xx 是否在集合 MM 中。如果存在输出 YESYES否则输出 NONO。∙ ∙操作 44查询集合 MM 中元素的个数即集合 MM 的大小。∙ ∙操作 55查询集合 MM 中 xx 的前驱前驱定义为小于 xx 且最大的数如果前驱不存在则输出 −1−1。∙ ∙操作 66查询集合 MM 中 xx 的后继后继定义为大于 xx 且最小的数如果后继不存在则输出 −1−1。输入描述第一行输入一个整数 nn1≦n≦1051≦n≦105表示操作的个数。接下来 nn 行每行表示一次操作。对于操作 1、2、3、5、61、2、3、5、6输入两个整数 optopt 和 xx1≦opt≦61≦opt≦60≦x≦1060≦x≦106分别表示操作类型和操作的参数对于操作 44输入两个整数 optopt 表示操作类型。输出描述对于操作类型为 3、4、5、63、4、5、6 的每次操作按照题意输出对应的查询结果每个结果占一行。思路1.根据题目要求选择TreeSet类型数据结构2.借助TreeSet内部方法完整需求规划