publicclassMain{ publicstaticvoidmain(String[] args){ Scanner in = new Scanner(System.in); int firstAddress = in.nextInt(); int n = in.nextInt(); int k = in.nextInt(); Node[] list = new Node[100000]; for (int i = 0; i < n; i++) { Node temp = new Node(in.nextInt(), in.nextInt(), in.nextInt()); list[temp.address] = temp; } in.close(); List<Node> array = new ArrayList<>(); link(list, firstAddress, array); reverse(array, k); for (int i = 0; i < array.size() - 1; i++) { System.out.printf("%05d %d %05d\n", array.get(i).address, array.get(i).data, array.get(i + 1).address); } int end = array.size() - 1; System.out.printf("%05d %d -1", array.get(end).address, array.get(end).data); }
publicstaticvoidreverse(List<Node> array, int k){ for (int i = 0; i + k <= array.size(); i += k) { for (int m = i + k - 1, n = i; m >= n; m--, n++) { Node temp = array.get(n); array.set(n, array.get(m)); array.set(m, temp); } } }
publicstaticvoidlink(Node[] list, int firstAddress, List<Node> array){ while (firstAddress != -1) { array.add(list[firstAddress]); firstAddress = list[firstAddress].next; } } }
classNode{ int address; int data; int next;
Node(int address, int data, int next) { this.address = address; this.data = data; this.next = next; } }
运行结果
1 2 3 4 5 6 7 8 9 10
状态 分数 题目 编译器 耗时 用户 部分正确 22 1025 Java (openjdk) 121 ms HibisciDai 测试点 结果 耗时 内存 0 答案正确 112 ms 18368 KB 1 答案正确 121 ms 17440 KB 2 答案正确 114 ms 17880 KB 3 答案正确 113 ms 17896 KB 4 答案正确 108 ms 17812 KB 5 运行超时 0 ms 0 KB 6 答案正确 111 ms 16828 KB