Spider 鍊錶排序

2021-10-07 05:15:22 字數 1512 閱讀 5569

時間複雜度:o(nlog(n))

空間複雜度:由於使用了遞迴,o(log(n))

class

solution

else

if(head-

>next==

nullptr

) listnode* fast=head;

listnode* slow=head;

while

(fast-

>next!=

nullptr

&&fast-

>next-

>next!=

nullptr

) listnode* pre=slow;

slow=slow-

>next;

//右邊鍊錶起始

pre-

>next=

nullptr

;//左右兩個鍊錶截斷

listnode* l=

sortlist

(head)

; listnode* r=

sortlist

(slow)

;return

merge

(l,r);}

private

: listnode*

merge

(listnode* l, listnode* r)

else

//合併鍊錶

listnode* tmp=res;

while

(l!=

nullptr

&&r!=

nullptr

)else

tmp=tmp-

>next;

}//確保兩個列表剩餘的連線

if(l!=

nullptr

)else

return res;}}

;

畫圖有助於理解鍊錶的前進與交換問題

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

//快速排序

void

quicksort

(listnode* left, listnode* right)

p = p-

>next;

//更新}if

(cur!=right)

quicksort

(left,pre)

;quicksort

(cur,right);}

listnode*

sortlist

(listnode* head)

quicksort

(head, tail)

;return head;}}

;

鍊錶 排序鍊錶

樂扣原題 definition for singly linked list.public class listnode class solution 將鍊錶轉化為陣列 listlist new arraylist while null head 陣列遞增排序 collections.sort li...

鍊錶 鍊錶排序 中等

描述 在 o n log n 時間複雜度和常數級的空間複雜度下給鍊錶排序。您在真實的面試中是否遇到過這個題?樣例給出 1 3 2 null,給它排序變成 1 2 3 null.挑戰分別用歸併排序和快速排序做一遍。題目鏈結 分析快速排序 演算法只交換節點的val值,平均時間複雜度o nlogn 不考慮...

鍊錶之排序鍊錶

148.排序鍊錶 力扣 leetcode leetcode cn.com 題目要求n logn 所以這邊考慮歸併排序 先分,再合,合的話就是合併兩個有序鍊錶,和合併兩個有序陣列一樣簡單 class solution listnode merge listnode l1,listnode l2 ptr...