[Leetcode] 23. Merge k Sorted Lists
来源:互联网 发布:jsp如何连接sqlserver 编辑:程序博客网 时间:2024/05/20 11:49
Problem:
Merge k sorted linked lists and return it as one sorted list. Analyze
and describe its complexity.
Idea:
General solution (the same as Merge 2 Sorted Lists Question) Use k index to record every position of k sorted lists individually. Compare values of every ListNodes and record the ListNode with smaller value and then move backward.
Priority Queue. Construct a sorted Priority Queue with first item of every List. Then record and remove the first item of Priority Queue, after with insert next item who is in the same list with the removed item.
Heap solution. A little common with Priority Queue, just record and pop the first item in heap.
Solution :
solution for 2:
class Solution(object): def insertItem(self,tmpItem,tmplist): lenlist = len(tmplist) for i in xrange(lenlist): if tmplist[i][0].val >= tmpItem[0].val: tmplist.insert(i,tmpItem) break if lenlist == len(tmplist): tmplist.append(tmpItem) return tmplist def mergeKLists(self, lists): klen = len(lists) headNode = ListNode(0) tmpNode = headNode tmplist = [] for i in xrange(klen): if lists[i] != None: tmplist.append((lists[i],i)) tmplist = sorted(tmplist, key=lambda item: item[0].val) while len(tmplist) != 0: tmpNode.next = ListNode(tmplist[0][0].val) tmpNode = tmpNode.next tmpItem = (tmplist[0][0].next,tmplist[0][1]) tmplist.remove(tmplist[0]) if tmpItem[0] != None: tmplist = self.insertItem(tmpItem,tmplist) return headNode.next
(ref)solution for 3:
def mergeKLists(self, lists): from heapq import heappush, heappop, heapreplace, heapify dummy = node = ListNode(0) h = [(n.val, n) for n in lists if n] heapify(h) while h: v, n = h[0] if n.next is None: heappop(h) #only change heap size when necessary else: heapreplace(h, (n.next.val, n.next)) node.next = n node = node.next return dummy.next
Ref: http://blog.csdn.net/magicbean2/article/details/53618115
- leetcode 23. LeetCode Merge k Sorted Lists
- [LeetCode]23.Merge k Sorted Lists
- LeetCode --- 23. Merge k Sorted Lists
- LeetCode 23.Merge k Sorted Lists
- [Leetcode] 23. Merge k Sorted Lists
- 【LeetCode】23.Merge k Sorted Lists
- [leetcode] 23.Merge k Sorted Lists
- Leetcode-23.Merge k Sorted Lists
- [Leetcode]23. Merge k Sorted Lists @python
- leetcode 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- [leetcode] 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- LeetCode-23.Merge k Sorted Lists
- Leetcode 23. Merge k Sorted Lists
- js里声明函数有几种方式? var abc = function(x){} 和 function abc(x){} 这两种声明方法有什么不同?
- safari浏览器数字显示长度不一致的问题
- Android项目针对libs(armeabi,armeabi-v7a,x86)进行平台兼容
- [BZOJ2082][Poi2010][质因数分解][乱搞]Divine divisor
- python-numpy: linalg.solve中报错 Singular Matrix
- [Leetcode] 23. Merge k Sorted Lists
- [工具]markdown编辑器
- java 加密之非对称加密算法
- 排序算法
- java排序(3):交换类排序
- java排序(4):选择类排序
- tgit操作
- C语言比较两字符串是否相等
- 文章标题