每日leetcode 排序鍊錶

2021-09-24 09:29:25 字數 929 閱讀 6356

在 o(n log n) 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。

示例 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.

* struct listnode

* };

*/class solution

return

sort

(head,

0,i-1)

;}listnode*

sort

(listnode* head,

int l,

int r)

listnode* tmp=cur->next;

cur->next=nullptr;

//斷開

listnode* left=

sort

(head,l,mid)

; listnode* right=

sort

(tmp,mid+

1,r)

; listnode* res=

merge

(left,right)

;return res;

} listnode*

merge

(listnode* a,listnode* b)

else

if(b==nullptr)

else

if(a->valval)

else

}return root->next;}}

;

每日leetcode 奇偶鍊錶

給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 5 null ...

leetcode 鍊錶排序

對鍊錶排序,用歸併排序。題目要求空間時間複雜度為o nlogn 但是空間複雜度為o 1 1.自己寫的程式,時間複雜度為o nlogn 但是空間複雜度為o n 用快慢指標 分別走2步和1步 找到中間節點。但是最後排序的部分,用複製將排好序的部分貼上會原來鍊錶中,這個方法比較笨,而且增加空間複雜度,並不...

leetcode 鍊錶 排序

思路 使用歸併排序。拆分 合併均採用遞迴方式。public listnode sortlist listnode head pre.next null return merge sortlist head sortlist slow public listnode merge listnode l1...