将两个升序链表合并为一个新的升序链表

思路

  • 创建一个新的链表用来保存合并结果,为了方便插入,使其带傀儡节点,定义一个引用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;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43939602/article/details/114395584