[Leetcode] 23. Merge k Sorted Lists

原创 2016年06月02日 10:28:27

题目:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

思路:
一看到这个题目,开始的想法是依次将两个已有顺序链表的合并。但是这个方法,如果数组长度是n,合并次数就是n次,运行超时。
所以要减少链表之间的合并次数。
可以利用归并的思想。

具体代码如下:

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

        return merge(lists, 0, lists.length);
    }

    public ListNode merge(ListNode[] lists,int low, int high){
        int n = high - low;
        if(n < 1){
            return null;
        }
        if(n == 1){
            return lists[low];
        }
        int mid = low + n / 2;

        ListNode left = merge(lists,low, mid);
        ListNode right = merge(lists,mid, high);

        return MegerList(left,right);
    }

//  对两个已排序的链表进行合并
    public ListNode MegerList(ListNode head1,ListNode head2){
        ListNode phead = new ListNode(Integer.MIN_VALUE);
        ListNode p = phead;

        while(head1 != null && head2 != null){
            if(head1.val < head2.val){
                p.next = head1;
                head1 =head1.next;
            }
            else{
                p.next = head2;
                head2 =head2.next;
            }
            p = p.next;
        }

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

        return phead.next;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

23. Merge k Sorted Lists等题 第二周解题报告

原题Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity....
  • Mr_Zing
  • Mr_Zing
  • 2016年09月11日 23:47
  • 587

leetCode 23. Merge k Sorted Lists (合并k个排序链表) 解题思路和方法

Merge k Sorted Lists  Merge k sorted linked lists and return it as one sorted list. Analyze and des...
  • xygy8860
  • xygy8860
  • 2015年07月06日 23:17
  • 491

LeetCode23 Merge k Sorted Lists 把K个有序链表连接成一个

题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its comple...
  • vvaaiinn
  • vvaaiinn
  • 2015年05月06日 11:17
  • 2342

leetcode_效率题解_23. Merge k Sorted Lists(合并k个有序链表)

相关题解: leetcode_效率题解_[python/C++]_21. Merge Two Sorted Lists(合并2个有序链表)题目链接 【题目】 Merge k sorted lin...
  • huangmx1995
  • huangmx1995
  • 2016年11月22日 22:09
  • 310

LeetCodet题解--23. Merge k Sorted Lists(合并K个已排序的链表)

链接 LeetCode题目:https://leetcode.com/problems/generate-parentheses GitHub代码:https://github.com/...
  • gatieme
  • gatieme
  • 2016年04月08日 16:32
  • 1585

LeetCode OJ 之 Merge Two Sorted Lists(合并两个有序的链表)

题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici...
  • u012243115
  • u012243115
  • 2014年11月06日 22:27
  • 437

每日算法之二十一:Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity....
  • yapian8
  • yapian8
  • 2014年05月28日 11:36
  • 502

算法题——Merge k Sorted Lists(JAVA)合并链表

合并若干个有序列表
  • ivyusing
  • ivyusing
  • 2017年05月06日 12:08
  • 157

算法设计与分析(16)-- Merge k Sorted Lists(难度:hard)

Merge k Sorted Lists
  • alexlau8
  • alexlau8
  • 2017年06月22日 11:24
  • 237

一次使用 Redis 优化查询性能的实践

一次使用 Redis 优化查询性能的实践 应用背景 有一个应用需要上传一组ID到服务器来查询这些ID所对应的数据,数据库中存储的数据量是7千万,每次上传的ID数量一般都是几百至上千...
  • u010802573
  • u010802573
  • 2015年12月26日 17:36
  • 369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Leetcode] 23. Merge k Sorted Lists
举报原因:
原因补充:

(最多只允许输入30个字)