剑指 Offer II 077. 链表排序

剑指 Offer II 077. 链表排序

给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
 
解题代码:
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next


class Solution(object):
def sortList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head is None or head.next is None:
return head
slow = head
quick = head.next
while quick is not None and quick.next is not None:
quick = quick.next.next
slow = slow.next
new_list = slow.next
slow.next = None
left_list = self.sortList(head)
right_list = self.sortList(new_list)
return self.merge(left_list, right_list)

def merge(self, left_list, right_list):
if left_list is None: return right_list
if right_list is None: return left_list
if left_list.val < right_list.val:
left_list.next = self.merge(left_list.next, right_list)
return left_list
else:
right_list.next = self.merge(left_list, right_list.next)
return right_list

 

 

posted on 2021-10-29 11:00  random_boy  阅读(66)  评论(0)    收藏  举报

导航