LeetCode python-148. 排序链表
先看题目:
(题目来力扣网站)
思路:
因为时间复杂度是nlogn,所以采用二分法。假设是n = 2^k个输入,经过二分法,有 k = logn层。每一层排序的时间复杂度是n,故整体时间复杂度是nlogn。
方法一:
在 left, right = self.sortList(head), self.sortList(mid)之前实现二分法操作,分到最小单元,即left = None,right = None,之后实现排序操作,再合并,循环,直到head =None或head.next== None。
#归并排序,递归法。
#通过二分法得到最小节点单元,直到left.next = None and right.next = None.然后开始合并
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
class Solution:
def sortList(self, head):
if head == None or head.next == None:
return head # termination.
slow, fast = head, head.next#快指针走的是慢指针的两倍,故