leetcode 20 合并两个有序链表

合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

直接迭代

注意点:使用哨兵节点

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
       ListNode ret = new ListNode(-1);
        ListNode temp= ret;
        //l1和l2都不空时,谁的值小,把谁的头放上去
        while(l1!=null&&l2!=null){
            if(l1.val<= l2.val){
                temp.next=l1;
                temp=temp.next;
                l1=l1.next;
            }
            else{
                temp.next=l2;
                temp=temp.next;
                l2=l2.next;
            }
        }
        //循环终止时,至多有一个非空
        temp.next=l1==null?l2:l1;
        return ret.next;
    }
}

递归

如果l1或l2为空,就返回另外一个
如果不为空,就比较两个节点值的大小,决定放入递归的节点

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
       if(l1==null){
            return l2;
        }
        else if(l2==null){
            return l1;
        }
        else if(l1.val<=l2.val){
            l1.next=mergeTwoLists(l1.next,l2);
            return l1;
        }
        else{
            l2.next=mergeTwoLists(l2.next,l1);
            return l2;
        }
    }
}
posted @ 2021-09-01 16:58  博客是个啥?  阅读(24)  评论(0编辑  收藏  举报