题目贴在最后。
思路:
并不难,但是,ArrayList 和 LinkedList 删除效率很低,所以要用 LinkedHashSet。
需要 删除效率高的有序 数据结构,双向链表 + 哈希。
代码:
// 本题为考试多行输入输出规范示例,无需提交,不计分。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n1 = scanner.nextInt();
int n2 = scanner.nextInt();
int q = scanner.nextInt();
int[] arr = new int[q];
for (int i = 0; i < q; i ++) {
arr[i] = scanner.nextInt();
}
Set<Integer> set1 = new LinkedHashSet<>();
Set<Integer> set2 = new LinkedHashSet<>();
for (int i = 1; i <= n1; i ++) {
set1.add(i);
}
for (int i = n1 + 1; i <= n1 + n2; i ++) {
set2.add(i);
}
for (int i = 0; i < q; i ++) {
// Integer cur = arr[i];
if (set1.contains(arr[i])) {
set1.remove(arr[i]);
set2.add(arr[i]);
}
else {
set2.remove(arr[i]);
set1.add(arr[i]);
}
}
for(Integer i : set1) {
System.out.print(i);
System.out.print(" ");
}
System.out.println();
for(Integer i : set2) {
System.out.print(i);
System.out.print(" ");
}
}
}