剑指 Offer 25. 合并两个排序的链表

题目描述:

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

思路:

两个指针分别指向链表元素,然后比较两个元素大小,小的则连到合成后链表,直到达到一个链表的末尾。然后如果哪一个链表还有元素,直接连到合成后链表后面即可。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var mergeTwoLists = function(l1, l2) {
var head = new ListNode(0);
var pHead = head;
while(l1 != null && l2 != null){
if(l1.val >= l2.val){
head.next=l2;
l2=l2.next;
}else{
head.next=l1;
l1=l1.next;
}
head=head.next;
}
if(l1 != null){
head.next=l1;
}
if(l2 != null){
head.next=l2;
}
return pHead.next;
};