思路
- 创建一个新的链表用来保存合并结果,为了方便插入,使其带傀儡节点,定义一个引用tailNode,使其指向链表的末尾
- 创建两个引用head1,head2,分别指向两个待合并的链表的第一个节点,比较head1的val和head2的val,小的一个插入到新链表末尾,更新即可
- 直到其中某个链表为空了,那么就将另外一个链表的剩余部分全部插入到新链表的末尾
- 由于新链表是带傀儡节点的链表,最终返回新链表头节点的下一个节点即可
代码
public class Solution5 {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode l3=new ListNode(0);
ListNode head3=l3;
ListNode tailNode=l3;
ListNode head1=l1;
ListNode head2=l2;
while(head1!=null&&head2!=null){
if(head1.val<head2.val){
tailNode.next=new ListNode(head1.val);
head1=head1.next;
}else{
tailNode.next=new ListNode(head2.val);
head2=head2.next;
}
tailNode=tailNode.next;
}
if(head1==null){
tailNode.next=head2;
}else{
tailNode.next=head1;
}
return head3.next;
}
}