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

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 25. 合并两个排序的链表相关的知识,希望对你有一定的参考价值。

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

示例1:

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

限制:

0 <= 链表长度 <= 1000

题解一:

    /**
     * 剑指 Offer 25. 合并两个排序的链表
     *
     * @return 两个有序链表合并后的新有序链表
     */
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) 
        /*
         * 创建一个新头节点 newHead,临时节点 cur,依次遍历 l1 和 l2,
         * 若某条链表当前值较小则连接到 cur 后,指针后移,直至某条连接遍历结束,
         * 然后剩下一条链表的剩余节点直接连接到 cur 后,返回 newHead.next
         */
        ListNode newHead = new ListNode(-1);
        ListNode cur = newHead;
        // 遍历到 l1 或 l2 的尾,依次将节点添加到 cur 后
        while (l1 != null && l2 != null) 
            int val1 = l1.val;
            int val2 = l2.val;
            if (val1 < val2) 
                cur.next = l1;
                l1 = l1.next;

             else 
                cur.next = l2;
                l2 = l2.next;
            
            cur = cur.next;
        

        /*
         *  // l1 未遍历完,将剩余节点连接到 cur 后
         * if (l1 != null) 
         *    cur.next = l1;
         * 
         * if (l2 != null) 
         *   cur.next = l2;
         * 
         */
        cur.next = l1 == null ? l2 : l1;
        return newHead.next;
    

题解二:

    /**
     * 剑指 Offer 25. 合并两个排序的链表
     *
     * @return 两个有序链表合并后的新有序链表
     */
    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(l1, l2.next);
            return l2;
        
    

以上是关于[LeetCode]剑指 Offer 25. 合并两个排序的链表的主要内容,如果未能解决你的问题,请参考以下文章

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

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

LeetCode(剑指 Offer)- 25. 合并两个排序的链表

LeetCode(剑指 Offer)- 25. 合并两个排序的链表

我用java刷 leetcode 剑指 Offer 25. 合并两个排序的链表

剑指 Offer 25. 合并两个排序的链表(leetcode每日打卡)