leetcode: 23. Merge k Sorted Lists

Problem

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

AC

# TODO: Runtime Error in python3, while ac in python2


class ListNode():
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution():
    def mergeKLists(self, x):
        if not x:
            return
        cur = dummy = ListNode(0)
        import heapq
        minHeap = [(l.val, l) for l in x if l]
        heapq.heapify(minHeap)
        while minHeap:
            cur.next = heapq.heappop(minHeap)[1]
            cur = cur.next
            if cur.next:
                heapq.heappush(minHeap, (cur.next.val, cur.next))
        return dummy.next


if __name__ == "__main__":
    list1, list1.next = ListNode(2), ListNode(4)
    list2, list2.next = ListNode(1), ListNode(3)
    list3 = ListNode(7)
    result = Solution().mergeKLists([list1, list2, list3])
    assert '{0}->{1}->{2}->{3}->{4}'.format(result.val, result.next.val, result.next.next.val,
                                            result.next.next.next.val, result.next.next.next.next.val) \
           == '1->2->3->4->7'

Error

但是在LeetCode提交时,如果选择 python3 解释器会报错:
这里写图片描述

具体原因见我的另一篇博客:python3 调用heapq库 时遭遇 “TypeError: unorderable types”

解决方案:

临时换个解释器就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值