【发布时间】:2019-12-27 02:37:46
【问题描述】:
我一直在尝试理解这个 leetcode 问题的递归顺序,我也找到了解决方案。我了解合并函数,但我不了解发生在 mergeKLists 函数上的递归。帮助将不胜感激。请尽可能描述性地向我展示导致最终合并链表的调用和返回。 * 我了解合并功能,所以无需解释。
def mergeKLists(self, lists):
if not lists:
return
if len(lists) == 1:
return lists[0]
mid = len(lists)//2
l = self.mergeKLists(lists[:mid])
r = self.mergeKLists(lists[mid:])
return self.merge(l, r)
def merge(self, l, r):
dummy = cur = ListNode(0)
while l and r:
if l.val < r.val:
cur.next = l
l = l.next
else:
cur.next = r
r = r.next
cur = cur.next
cur.next = l or r
return dummy.next
【问题讨论】:
标签: python recursion merge linked-list