21. 合并两个有序链表

x33g5p2x  于11个月前 转载在 其他  
字(0.4k)|赞(0)|评价(0)|浏览(108)

描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
*
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

解题思路

利用归并排序的思想就OK了
归并排序
可以迭代也可以递归,不过时间复杂度是相同的,不同的是迭代空间用的稍微少一点应该。

代码

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode head=new ListNode();
        ListNode temp=head;

        while(l1!=null && l2!=null){
            if(l1.val<l2.val){
                temp.next=l1;
                l1=l1.next;
            }else{
                temp.next=l2;
                l2=l2.next;
            }
            temp=temp.next;
        }
        temp.next=l1==null?l2:l1;
        return head.next;
    }
}

相关文章