题目
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。
示例 1:
输入: 4->2->1->3
输出: 1->2->3->4
示例 2:
输入: -1->5->3->4->0
输出: -1->0->3->4->5
if not head or not head.next:
return head
pre, slow, fast = head, head, head
while fast and fast.next: #找链表中点
pre = slow
slow = slow.next
fast = fast.next.next
pre.next = None
left, right = self.sortList(head), self.sortList(slow)
return self.merge(left, right)
def merge(self, l1, l2):
if not l1:
return l2
if not l2:
return l1
if l1.val < l2.val:
head = ListNode(l1.val)
head.next = self.merge(l1.next, l2)
else:
head = ListNode(l2.val)
head.next = self.merge(l1, l2.next)
return head