题目

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. ArcGIS for Android 中实现要素绘制时固定MapView

    最近在项目中遇到这么一个情况,在MapView中要求实现绘制点.线.面. 在这里面就会遇到这么一个问题,绘制折线和多边形型时,每点击一个点屏幕就会跟着晃,使用起来很不方便(使用Note2 触控笔),所 ...

  2. 定制Banner

    1.修改Banner (1)在SpringBoot启动的时候会有一个默认启动的图案 (2)在src/main/resources下新建一个banner.txt (3)通过http://patorjk. ...

  3. (转载)C#中的lock关键字

    lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.这是通过在代码块运行期间为给定对象获取互斥锁来实现的. 先来看看执行过程,代码示例如下: 假设线程A先执行,线程B稍微慢一点.线程A执 ...

  4. uLua学习之数据交互(三)

    前言 在上节中,大概谈了一下如何在lua脚本中调用unity3d中的方法来创建游戏物体,这只是很小的一个方面,uLua的优势在于对unity3d中C#语言的扩展和定制.那么如何扩展和定制呢?其中的数据 ...

  5. ADO数据库编程详解(C++)----初级入门篇

    一.概述 ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过 OLE DB提供者对在数据库 ...

  6. centos6.5_64bit-nginx开机自启动

    Nginx 是一个很强大的高性能Web和反向代理服务器.下面介绍在linux下安装后,如何设置开机自启动. 首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令:   ...

  7. Mac Office 2016 卸载

    https://support.office.com/zh-cn/article/%E5%8D%B8%E8%BD%BD-Office-2016-for-Mac-eefa1199-5b58-43af-8 ...

  8. Unity结合Flask实现排行榜功能

    业余做的小游戏,排行榜本来是用PlayerPrefs存储在本地,现在想将数据放在服务器上.因为功能很简单,就选择了小巧玲珑的Flask来实现. 闲话少叙.首先考虑URL的设计.排行榜无非是一堆分数sc ...

  9. 一些好的IOS blog 不断增加中。。。。

    http://www.swiftkiller.com/?p=371 http://blog.csdn.net/javayujiafeng/article/details/14163319 http:/ ...

  10. Sql优化器究竟帮你做了哪些工作?

    关系型数据库的一大优势之一,用户无需关心数据的访问方式,因为这些优化器都帮我们处理好了,但sql查询优化的时候,我不得不要对此进行关注,因为这牵扯到查询性能问题. 有经验的程序员都会对一些sql优化了 ...