Sort a linked list in O(n log n) time using constant space complexity.
class Solution(object): def mergeTwoLists(self, left, right): if left == None: return left if right == None: return right head = Node(0) dumm = head while left is not None and right is not None: if left.data < right.data: head.next = left left = left.next else: head.next = right right = right.next head = head.next if left is not None: head.next = left if right is not None: head.next = right return dumm.next def sortList(self,head): if head is None or head.next is None: return head slow = head fast = head while fast.next is not None and fast.next.next is not None: slow = slow.next fast = fast.next.next left = head right = slow.next slow.next = None left = self.sortList(left) right = self.sortList(right) head = self.mergeTwoLists(left, right) return head head = Creatlist(8) printlist(head) print "-------------------------" S = Solution() printlist(S.sortList(head))
本文介绍了一种使用常数空间复杂度,在O(n log n)时间内对链表进行排序的方法。通过递归将链表分为两半,分别排序后再合并两个有序链表,最终实现整个链表的排序。
5838

被折叠的 条评论
为什么被折叠?



