LeetCode - 148--ソート・リスト(パイソン)

複雑さと一定のグレードの空間的な複雑さは、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

 

おすすめ

転載: www.cnblogs.com/NPC-assange/p/11650237.html
おすすめ