``在 o(n log n) 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。
今天又是乙個鍊錶的題目,題目提示我們可以用二分法來做,鍊錶的二分法乙個巧妙點就是通過我們前兩天那個一塊一慢的兩個指標,+1和+2然後其他的思想和陣列的遞迴類似。
示例 1:
輸入: 4->2->1->3
輸出: 1->2->3->4
示例 2:
輸入: -1->5->3->4->0
輸出: -1->0->3->4->5
* definition for singly-linked list.
*public
class
listnode*}
*/class
solution
//取一半的鍊錶
listnode tmp = slow.next;
slow.next = null;
listnode left =
sortlist
(head)
; listnode right =
sortlist
(tmp)
;//遞迴無限二分
listnode h =
newlistnode(0
);//給乙個新鍊錶儲存空間
listnode res = h;
while
(left != null && right != null)
else
h = h.next;
} h.next = left != null ? left : right;
return res.next;
}}
C 實戰練習題目37 排序
題目 對10個數進行排序。程式分析 可以利用選擇法,即從後9個比較過程中,選擇乙個最小的與第乙個元素交換,下次類推,即用第二個元素與後8個進行比較,並進行交換。例項 1 include2 define n 10 3int main 420 21 printf 排序結果是 n 22for i 0 i ...
Leetcode 148 排序鍊錶
在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。示例 1 輸入 4 2 1 3 輸出 1 2 3 4示例 2 輸入 1 5 3 4 0 輸出 1 0 3 4 5在陣列儲存下的歸併排序,需要借出輔助空間完成,而鍊錶儲存的歸併排序,不需要借助輔助空間,直接在原來的鍊錶上進行操作,...
LeetCode 148 排序鍊錶
在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。示例 1 輸入 4 2 1 3輸出 1 2 3 4示例 2 輸入 1 5 3 4 0輸出 1 0 3 4 5歸併這裡我感覺有點不符合題意 不符合常數空間 如果是快排的話呢,交換節點還是很麻煩的,所以快排交換值了 癱.jpg cl...