难度系数 ⭐
时间限制 C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
题目内容 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路 依次对比两个链表的值,更小的值加入结果链表中。注意临界情况即可。
package nowcoder;
public class No19 {
public static class Node{
public int value;
public Node next;
public Node(int value){
this.value = value;
}
}
public static Node Merge(Node head1, Node head2){
Node res = null;
if (head1 == null) return head2;
if (head2 == null) return head1;
if (head1.value < head2.value){
res = head1;
head1 = head1.next;
} else {
res = head2;
head2 = head2.next;
}
Node flag = res;
while (head1 != null && head2 != null){
if (head1.value < head2.value) {
flag.next = head1;
flag = flag.next;
head1 = head1.next;
} else {
flag.next = head2;
flag = flag.next;
head2 = head2.next;
}
}
if (head1 != null){
flag.next = head1;
}
if (head2 != null){
flag.next = head2;
}
return res;
}
public static void main(String[] args){
Node head1 = new Node(1);
head1.next = new Node(2);
head1.next.next = new Node(3);
head1.next.next.next = new Node(5);
head1.next.next.next.next = new Node(8);
Node head2 = new Node(2);
head2.next = new Node(4);
head2.next.next = new Node(5);
head2.next.next.next = new Node(7);
head2.next.next.next.next = new Node(8);
head2.next.next.next.next.next = new Node(9);
Node flag = Merge(head1, head2);
while (flag != null){
System.out.print(flag.value + " ");
flag = flag.next;
}
}
}