美文网首页
leetcode-23.合并K个排序链表

leetcode-23.合并K个排序链表

作者: sleepforests | 来源:发表于2020-03-24 15:48 被阅读0次

题目

https://leetcode-cn.com/problems/merge-k-sorted-lists/description/

递归方式

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
     public ListNode mergeKLists(ListNode[] lists) {
        if(lists==null ||lists.length==0){
            return null;
        }
         
        if(lists.length==1){
            return lists[0];
        }
        if(lists.length==2){
            return merge(lists[0],lists[1]);
        } 
    
        return merge(lists[0], mergeKLists(Arrays.copyOfRange(lists,1,lists.length)) );
    }

    private ListNode merge(ListNode list1, ListNode list2){
        ListNode dummy=new ListNode(0);
        ListNode p = dummy;
        while(list1!=null&&list2!=null){
            if(list1.val<list2.val){
                p.next=list1;
                list1=list1.next;
            }else{
                p.next=list2;
                list2=list2.next;
            }
            p=p.next;
        }
        if(list1!=null){
            p.next=list1;
        }
        if(list2!=null){
            p.next=list2;
        }
        return dummy.next;
    }
    
}

非递归的方式

 private ListNode mergeB(ListNode[]list){
        if(list==null||list.length==0){
            return null;
        }
        if(list.length==1){
            return list[0];
        }

        ListNode head = merge(list[0],list[1]);
        for(int i=2;i<list.length;i++){
            head = merge(head, list[i]);
        }
        return head;
    }

// merge 方法同上

相关文章

  • leecode刷题(27)-- 合并k个排序链表

    leecode刷题(27)-- 合并k个排序链表 合并k个排序链表 合并 k 个排序链表,返回合并后的排序链表。请...

  • ARTS第五周2020620

    Algorithm 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例...

  • 合并K个排序链表【LeetCode:23】

    题目: 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: ...

  • leetcode-23.合并K个排序链表

    题目 https://leetcode-cn.com/problems/merge-k-sorted-lists/...

  • Swift - LeetCode - 合并K个排序链表

    题目 合并K个排序链表 问题: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 解题思路:...

  • LeetCode:合并K个排序链表

    合并K个排序链表(困难) 题目叙述: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例...

  • LeetCode-23-合并K个有序链表

    LeetCode-23-合并K个有序链表 题目 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂...

  • 23. 合并K个排序链表

    23.合并K个排序链表 合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入:[ 1-...

  • 【算法】合并K个排序链表

    合并K个排序链表 描述 合并 k 个排序链表,返回合并后的排序链表。 解题思路 1.将所有节点添加到数组中,对数组...

  • LeetCode 专题 :分治算法

    LeetCode 第 23 题:归并多个有序链表 传送门:23. 合并K个排序链表。 合并 k 个排序链表,返回合...

网友评论

      本文标题:leetcode-23.合并K个排序链表

      本文链接:https://www.haomeiwen.com/subject/dagoyhtx.html