148 排序鍊錶 PYTHON

2021-10-01 16:16:51 字數 1776 閱讀 1485

)#新增表頭節點

head_.

next

= head

p = head.

next

#保留當前節點的第乙個節點,用於比較

head.

next

=none

while p:

curr = p.

next

#儲存下乙個節點資訊

q = head_ #設立頭結點指標,每次都要迴圈判斷

while q.

next

and q.

next

.val <= p.val:

#一直迴圈找比當前頭結點值小的節點

q = q.

next

p.next

= q.

next

#頭插法插入節點

q.next

= p #當前值比所有元素都大,所以要放在最後

p = curr #後移

return head_.

next

148 排序鍊錶

根據演算法題目要求,看出主要考察排序演算法中的歸併排序,那歸併排序的思想類似於分治。簡單描述為 第一步 遞迴,找中點,切割鍊錶 第二步 對每個子鍊錶操作 第三步 把排序好的子鍊錶一步步合併 class solution 遞迴地切割表 直達最後表只有乙個或者沒有乙個節點 再進行合併 listnode ...

148 排序鍊錶

自己做鍊錶的題很容易弄錯,感覺對鍊錶太不熟悉了。需要加強對鍊錶的練習。這種鍊錶題有時感覺思路很簡單,但是在寫 的過程中會發現處理起來要十分的細心。下面 記錄兩種實現方法 都是別人實現的方法 第一種方法 裡注釋掉的部分 不滿足題目要求 1 設定快慢指標分割鍊錶,遞迴 2 對分割後的鍊錶進行排序,合併兩...

148 排序鍊錶

難度 中等 題目描述 思路總結 題目要求時間複雜度o nlog n 想到二分 想到歸併。歸併遞迴解法,額外空間並不是常數級,所以想到非遞迴自底向上的解法。題解一 遞迴 definition for singly linked list.class listnode def init self,x s...