148. 排序鍊錶 - 力扣(leetcode) (leetcode-cn.com)
題目要求n(logn),所以這邊考慮歸併排序
先分,再合,合的話就是合併兩個有序鍊錶,和合併兩個有序陣列一樣簡單
class solution
listnode* merge(listnode* l1, listnode* l2)
ptr->next = l1 ? l1 : l2;
return head->next;}};
毒瘤官方答案,搞乙個tail值,真垃圾
1/**view code2* definition for singly-linked list.
3* struct listnode
7* listnode(int x) : val(x), next(nullptr) {}
8* listnode(int x, listnode *next) : val(x), next(next) {}
9* };
10*/
11class
solution
16 listnode* divide(listnode* head,listnode*tail)
23 listnode *slow = head,*fast =head;
24while(fast!=tail&&fast->next!=tail)
28 listnode *t1 =divide(head,slow);
29 listnode *t2 = divide(slow,tail);//
不是nutllptr是tail
3031
return
merge(t1,t2);32}
33 listnode* merge(listnode* t1,listnode*t2)else
44 t = t->next;
45if(t1!=nullptr)
48else
if(t2!=nullptr)51}
52return head->next ;//
尾插法,頭沒有資料的53}
54 };
存乙個別人的七份簡潔答案
1class
solution
1213
private
:14 listnode* merge(listnode* l1, listnode*l2)
20 ptr->next = l1 ?l1 : l2;
21return
sub.next;22}
23};
24紅黑樹排序
25利用stl裡面的set容器底層是紅黑樹實現,來實現樹排序
2627
28class
solution
40};
41堆排序
42也是利用stl裡面的優先佇列底層是堆排序演算法,來實現。
4344
45class
solution
56return
head;57}
58};
59以下**是力扣因為時間過不了的**,但是邏輯沒問題。大家看看,當擴張思維了。
6061
**邏輯都是,把陣列當成中間變數來做排序,再最終轉化成鍊錶:
62 鍊錶->陣列->鍊錶
6364
快排65
66class
solution
7879
private:80
void quicksort(vector&worker, int l, int
r) 86
87int patition(vector&worker, int l, int
r) 92
swap(worker[l], worker[r]);
93return
l;94}95
};96
97class
solution
110111
private
:112
void quicksort(vector &worker, int l, int
r) 118
119int patition(vector &worker, int l, int
r) 124
swap(worker[l], worker[r]);
125return
l;126
}127
};128
冒泡129
鍊錶 排序鍊錶
樂扣原題 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 不考慮...
有序鍊錶的建立之鍊錶排序
time limit 1000ms memory limit 65536kb submit statistic problem description 輸入n個無序的整數,建立乙個有序鍊錶,鍊錶中的結點按照數值非降序排列,輸出該有序鍊錶。input 第一行輸入整數個數n 第二行輸入n個無序的整數。o...