複雑さと一定のグレードの空間的な複雑さは、O(n log n)時間でリンクリストを並べ替えられています。
例1:
入力:4-> 2-> 1-> 3
出力:1-> 2-> 3-> 4
例2:
入力:-1-> 5-> 3-> 4-> 0
出力:> 5 -1-> 0-> 3-> 4-
挿入ソートは、確かにタイムアウトし、最悪時間計算量はO(N ^ 2)
1 クラスのソリューション: 2 DEF sortlistが(自己、ヘッド:ListNode) - > ListNode: 3 であればヘッド==なし又は head.next == なし: 4 リターンヘッド 5 dummyY = ListNode(0) 6 dummyY.next = ヘッド 7 P = ヘッド 8 R = p.next 9 p.next = なし 10 、P = R 11 ながら!P = なし: 12 プリ= dummyY 13 R = p.next 14 ながら pre.next =なし!と pre.next.val < p.val: 15 プリ= pre.next 16 p.next = pre.next 17 pre.next = P 18 、P = R 19 リターン dummyY.next
合併
1 クラスのソリューション: 2 DEF sortlistが(自己、ヘッド:ListNode) - > ListNode: 3 場合 ではない頭や ない head.next:リターンヘッド 4 遅い、速い= ヘッド、head.next 5 ながら迅速かつfast.next: 6 速いです、遅い= fast.next.next、slow.next 7 ミッド、slow.next = slow.next、なし 8 左、右= self.sortList(ヘッド)、self.sortList(MID) 9 10 時間=のRES = ListNode( 0) 11 一方、左と右: 12 であれば left.val <right.val:h.next、=左left.next、左 13 他:h.next、右= 右、right.next 14 H = h.next 15 h.next =左の場合、左他に右 16 リターン res.next