题目

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

代码:oj测试通过 Runtime: 231 ms

 # Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
# @param a list of ListNode
# @return a ListNode
def mergeKLists(self, lists):
# none
if len(lists) == 0:
return None
# only one list
if len(lists) == 1:
return lists[0]
# merge sort each two linked list
l1 = self.mergeKLists(lists[:len(lists)/2])
l2 = self.mergeKLists(lists[len(lists)/2:])
head = self.mergeTwoLists(l1,l2)
return head # merge two sorted linked list
def mergeTwoLists(self, l1, l2):
if l1 is None:
return l2
if l2 is None:
return l1
p = ListNode(0)
dummyhead = p
while l1 is not None and l2 is not None:
if l1.val < l2.val:
p.next = l1
l1 = l1.next
p = p.next
else:
p.next = l2
l2 = l2.next
p = p.next
if l1 is None:
p.next = l2
else:
p.next = l1
return dummyhead.next

思路

总体的思路是模仿归并排序。

这里给的参数是多个链表的头结点数组,将头节点数组不断二分;直到只剩下一个头结点,返回该头节点到上一层,并在上一层中将两个有序链表合并。

将两个有序链表merge的代码和思路,在这篇日志中可以看到

http://www.cnblogs.com/xbf9xbf/p/4186905.html

另,网上还有一种用堆的方法,后续再去试探这种方法,并把另一种方法的代码补上。

另,关于该问题的算法复杂度O(nklogk) (n为单个链表的最大长度,k为链表个数),个人觉得下面这篇日志表述的比较好,共享一下

http://www.tuicool.com/articles/ZnuEVfJ

leetcode 【 Merge k Sorted Lists 】python 实现的更多相关文章

  1. leetcode Merge K sorted Lists python

    # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = ...

  2. LeetCode: Merge k Sorted Lists 解题报告

    Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...

  3. [LeetCode] Merge k Sorted Lists 合并k个有序链表

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

  4. LeetCode:Merge k Sorted Lists

    题目链接 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexi ...

  5. LeetCode——Merge k Sorted Lists

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

  6. leetcode -- Merge k Sorted Lists add code

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

  7. LeetCode Merge k Sorted Lists (链表)

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

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

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

  9. Leetcode:Merge k Sorted Lists分析和实现

    题目大意是传入一个链表数组lists,每个链表都由若干个链接的链表结点组成,并且每个链表结点记录一个整数.题目保证传入的链表中的整数按从小到大进行排序. 题目要求我们输出一个新的链表,这个链表中应该包 ...

  10. LeetCode Merge k Sorted Lists 解决报告

    https://oj.leetcode.com/problems/merge-k-sorted-lists/ 归并K已经整理阵列,和分析算法的复杂. 解决报告:无论是不考虑优化,最简单的实现是要重新走 ...

随机推荐

  1. Android Broadcast Receive

    Broadcast Receive 广播接收(Broadcast Receive)为android的四大组件之一.主要用于监听广播消息,并做出响应.与应用程序中监听事件相比而言,该监听事件为全局监听. ...

  2. centos 安装 freeswitch,开启与关闭

    ---恢复内容开始--- 官网说明地址 :https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7 1.获取源码 ...

  3. python资料汇总

    http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html

  4. Linux I/O调度

    一) I/O调度程序的总结 1) 当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成.    2) 每个块设备都有它自己的队列.    3) I/O调度程序负责维护这些队列的顺 ...

  5. js 封装父页面子页面交互接口

    定义标准接口 Interface= {}; Interface.ParentWin = {}; Interface.ChildWin = {}; /** * 父页面提供的标准接口函数名称 */ Int ...

  6. 18课 Vue第一节

    Q1: url-loader必须搭载file-loader?Q2: 图片的打包问题,如果直接写在img标签里用src引用图片,该如何打包?Q3: 如何根据不同的页面html模板打包与之对应的css/j ...

  7. softmax 函数

    总结为:   将一组数变换为  总和为1,各个数为0~1之间的软性归一化结果. ========================================================= 关于 ...

  8. x5webview 微信H5支付

    mWebView.setWebViewClient(new WebViewClient() { // @Override // public boolean shouldOverrideUrlLoad ...

  9. Hadoop集群批量命令执行

    ./pdsh -R ssh -w node-10-0[0-5] hostname -R:指定传输方式,默认为rsh,本例为ssh,如果希望ssh传输需要另行安装pdsh-rcmd-ssh,如果希望ss ...

  10. nodejs mysql模块简单封装

    nodejs 简单的封装一些mysql模块 实现一个方法根据不同传参进行增删改查 首先要 npm install mysql 代码如下 function data(objHost,sql,callba ...