My Python solution: merge sort

  • 1
    class Solution(object):
        def sortList(self, head):
            if head is None or is None:
                return head
            middle_node = self.find_middle_node(head)
            right_head =
   = None
            return self.merge(self.sortList(head), self.sortList(right_head))
        def find_middle_node(self, head):
            slow, fast = head, head
            while fast and and
                fast =
                slow =
            return slow
        def merge(self, head1, head2):
            dummy = ListNode(None)
            node = dummy
            while head1 and head2:
                if head1.val < head2.val:
           = head1
                    head1 =
           = head2
                    head2 =
                node =
   = head1 or head2

Log in to reply

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.