解法
一种解法当然很简单,记录一下官解里的众多解法……
解法一:暴力
- 遍历找到所有的节点
- 排序
- 生成新链表
解法二:比较队头
每次取lists里值最小那个,取了之后用它的后继节点替补上去
class Solution(object):
def mergeKLists(self, lists):
"""
:type lists: List[ListNode]
:rtype: ListNode
"""
last = None
ans = None
lists = filter(lambda x:x!=None, lists)
import heapq
while len(lists):
i = min(xrange(len(lists)), key=lambda x:lists[x].val)
if last==None:
ans = lists[i]
else:
last.next = lists[i]
last = lists[i]
lists[i]=lists[i].next
if lists[i]==None:
lists.pop(i)
return ans