题解 | #链表合并#
链表合并
https://www.nowcoder.com/practice/27c833289e5f4f5e9ba3718ce9136759
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String first = scanner.nextLine();
String second = scanner.nextLine();
Node node1 = transform(first);
Node node2 = transform(second);
Node node = merge(node1, node2);
print(node);
}
}
public static Node merge(Node node1, Node node2) {
// 找到最小的那个
Node node = node1.value >= node2.value ? node2 : node1;
Node cur1 = node.next;
Node cur2 = node == node1 ? node2 : node1;
Node pre = node;
while (cur1 != null && cur2 != null) {
pre.next = cur1.value >= cur2.value ? cur2 : cur1;
pre = pre.next;
// 下移动
if (cur1 == pre) {
cur1 = cur1.next;
} else {
cur2 = cur2.next;
}
}
// 如果其中一个是null后
pre.next = cur1 == null ? cur2 : cur1;
return node;
}
public static Node transform(String str) {
Node node = null;
Node pre = null;
String array[] = str.split(" ");
for (String s : array) {
if (node == null) {
node = new Node(Integer.parseInt(s));
pre = node;
} else {
node.next = new Node(Integer.parseInt(s));
node = node.next;
}
}
return pre;
}
public static void print(Node node) {
while (node != null) {
System.out.print(node.value + " ");
node = node.next;
}
}
}
class Node {
int value;
Node next;
public Node(int value) {
this.value = value;
}
}

查看14道真题和解析