天天看点

力扣--21、合并两个有序链表

---------------------------------2021.9.12-----------------------------------------

力扣--21、合并两个有序链表

思路: 比较两个链表的大小然后不停迭代

public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        //遍历两个链表,比较大小
       ListNode listNode=new ListNode(0);
       while(l1.next!=null||l2.next!=null){
           if(l1.val>=l2.val||l1.next==null){
               listNode.val=l2.val;
               l2=l2.next;
           }
           if(l1.val<l2.val||l2.next==null){
               listNode.val=l1.val;
               l1=l1.next;
           }
           listNode=listNode.next;

       }return listNode;
    }
           
力扣--21、合并两个有序链表

20行报错

只能参考别人注解。

我这写的是个啥啊。。

链表需要先给next赋值,才能实现递归(node=node.next)

还需要一个哨兵节点用来做返回值

(18条消息) P21合并两个有序链表_风の记忆-CSDN博客

力扣--21、合并两个有序链表

https://blog.csdn.net/m0_37694106/article/details/104001654

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        //遍历两个链表,比较大小
        ListNode prehead=new ListNode(-1);
        ListNode listNode=prehead;
        while(l1!=null&&l2!=null){
            if(l1.val>=l2.val){
                listNode.next=l2;
                l2=l2.next;
            }
            if(l1.val<l2.val){//上面l2的值已经被修改过了,会出bug
                listNode.next=l1;
                l1=l1.next;
            }
            listNode=listNode.next;

        }
        listNode.next = l1 == null ? l2 : l1;
        return prehead.next;
    }
           

 emmm么,还是报错

改成else就好了.

递归还没写,,,