合并k个已排序的链表

Posted 唐 昊

tags:

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

采用逐步遍历

 public ListNode mergeKLists(ArrayList<ListNode> lists) 
        ListNode root = new ListNode(-1);
       
        for(int i = 0 ;i< lists.size();i++)
            root.next = mergeTwoLists(root.next,lists.get(i));
        
        return root.next;
    
    
    
    private ListNode mergeTwoLists(ListNode head1,ListNode head2)
    
        if(head1 == null || head2 == null)
            return head1==null?head2:head1;
        
        ListNode root = new ListNode(-1);
        ListNode temp = root;
        while(head1 != null && head2 != null)
            
            if(head1.val > head2.val)
                temp.next = head2;
                temp = temp.next;
                head2 = head2.next;
            
            else
            
                 temp.next = head1;
                temp = temp.next;
                head1= head1.next;
            

        
        if(head1 != null)
            temp.next = head1;
           
        
        else
            temp.next = head2;
           
        
        return root.next;
    

以上是关于合并k个已排序的链表的主要内容,如果未能解决你的问题,请参考以下文章

合并k个已排序的链表

[Leetcode] Merge k sorted lists 合并k个已排序的链表

合并k个已排序的链表(NC51/考察次数Top37/难度较难)

合并 K 个排序数组/向量的复杂性

Leetcode merge-k-sorted-lists(合并k路有序链表 最小堆)

K个排序链表的合并(Hard)