美文网首页数据结构与算法
链表--合并K个排序链表

链表--合并K个排序链表

作者: 暮想sun | 来源:发表于2020-01-06 20:27 被阅读0次

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
思路:分治思想。处理相加为len-1的数据。也就是0对应的len-i-1。类似归并排序思想。两两对应处理。

    private static class ListNode {
        private int val
        private ListNode next;
        public ListNode() {
        }
        public ListNode(int val) {
            this.val = val;
        }
        public ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }

public static ListNode mergeKLists(ListNode[] lists) {
        int len = lists.length;
        if (len == 0) {
            return null;
        }

        //使用分治法思想,两两合并。归并排序类似
        while (len > 1) {
            //分治处理,
            for (int i = 0; i < len / 2; i++) {
                lists[i] =mergeTowList(lists[i], lists[len - 1 - i]);
            }

            //处理后剩余数量
            len = (len + 1)/2;
        }

        return lists[0];
    }

    public static ListNode mergeTowList(ListNode first, ListNode second) {
        //设置一个哨兵服务结点
        ListNode head = new ListNode(-1);
        ListNode p = head;
        while (first != null && second != null) {
            if (first.val < second.val) {
                p.next = first;
                first = first.next;
            } else {
                p.next = second;
                second = second.next;
            }
            p = p.next;

        }

        if (first != null) {
            p.next = first;
        }

        if (second != null) {
            p.next = second;
        }

        //取下一个结点
        return head.next;
    }

相关文章

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

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

  • ARTS第五周2020620

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

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

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

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

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

  • LeetCode:合并K个排序链表

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

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

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

  • LeetCode 专题 :分治算法

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

  • 23. 合并K个排序链表

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

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

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

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

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

网友评论

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

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