博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode023. Merge k Sorted Lists
阅读量:2242 次
发布时间:2019-05-09

本文共 1556 字,大约阅读时间需要 5 分钟。

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

Example:

Input:[  1->4->5,  1->3->4,  2->6]Output: 1->1->2->3->4->4->5->6

第一想法很简单,把lists中所有value存进一个列表中,再对列表进行排序,然后根据排序重新构造新的链表。这种方法速度很快,内存占用较多,代码如下:

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def mergeKLists(self, lists):        """        :type lists: List[ListNode]        :rtype: ListNode        """        newlist=[]        for list in lists:            while list:                newlist.append(list.val)                list = list.next        newlist.sort()                head = p = ListNode(0)        for node in newlist:            p.next = ListNode(node)            p = p.next                    return head.next

同时也学习了python的heapq库函数,有关于堆,可以进行自动排序,不过这样速度会更慢,内存占用基本没有变化。关于heapq函数使用,参考

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def mergeKLists(self, lists):        """        :type lists: List[ListNode]        :rtype: ListNode        """        import heapq                heap=[]        for linklist in lists:            while linklist:                heapq.heappush(heap, linklist.val)                linklist = linklist.next                head = p = ListNode(0)                for i in range(len(heap)):            p.next = ListNode(heapq.heappop(heap))            p = p.next        return head.next

 

转载地址:http://fbrbb.baihongyu.com/

你可能感兴趣的文章
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>