排序兩個鍊錶
一文搞懂鍊錶
前言:之前考研的時候因為基礎不紮實,所以演算法題大多靠背,but 熟練度是一方面,總結方法也要跟上,這樣才能起到舉一反三的效果。1、虛擬頭節點:建乙個虛擬節點更讓容易表示節點,這樣鍊錶的每個節點都是公平的,對於空鍊錶也更好處理tips:如果不知道思路,可以先舉乙個例子模擬一下
2、 快慢指標(特別注意slow指標,一般要的是它的位置):
3、遞迴
4、頭插法、尾插法
尾插法:順序構造鍊錶(給定陣列)
頭插法:
逆序構造鍊錶
給定單向鍊錶的頭指標和乙個節點指標,定義乙個函式在 o(1) 內刪除這個節點。
5、特殊情況:
鍊錶有0、1、2個節點的情況需要特別考慮(演算法開頭單列為一種情況)
(刪除、插入、尋找的時候 即使是長鏈,也要考慮被操作物件是頭節點、尾節點的情況,一般要定位某節點前節點的指標)
6、快慢指標的slow節點的位置問題
兩個鍊錶的公共節點 簡單判斷鍊錶是否有環 141
找出環形鍊錶的入口節點 142 判斷回文鍊錶 234 重排鍊錶 l1-ln-l2… 143跟回文鍊錶很類似 交換鍊錶中的節點n14 鍊錶中倒數最後k個結點
旋轉平移鍊錶 61
刪除鍊錶的倒數第 n 個節點 19 分隔鍊錶(按照給定的值x) 86 鍊錶元素按奇偶位置聚集 328 遞迴——鍊錶的地位都相同(比如反轉鍊錶,各個節點的地位就是平等的不影響的)
迭代——鍊錶的地位不同,一般配合dummynode
(比如刪除重複元素,乙個元素的值會影響其他元素的地位)
合併兩個有序鍊錶 21
合併k個排序鍊錶 23
移除鍊錶特定值的元素 203 82. 刪除排序鍊錶中的重複元素 ii 刪除排序鍊錶中的重複元素 83 n15 反轉鍊錶 兩兩交換鍊錶中的節點//反轉鍊錶 24、206 反轉鍊錶(反轉指定位置的鍊錶)92 對鍊錶進行插入排序 147o(nlogn) 時間複雜度排序鍊錶148
合併兩個有序鍊錶 21合併k個排序鍊錶 23
兩數相加(兩個鍊錶求和 個位數在左邊 不需要用棧)2 兩個鍊錶求和 (個位數在右邊 需要用棧)4451 判斷回文鍊錶 234
有序鍊錶轉化為平衡的bst 109
鍊錶的中間節點 876
鍊錶中間節點的應用
2 刪除鍊錶的倒數第 n 個節點 19
n14 鍊錶中倒數最後k個結點
刪除排序鍊錶中的重複元素 83
刪除排序鍊錶中的重複元素 ii 82
刪除鍊錶的節點(節點值不重複,只刪除給定值)面試題18
3 兩兩交換鍊錶中的節點//反轉鍊錶 24、206
旋轉鍊錶 61
反轉鍊錶(反轉指定位置的鍊錶)92
4 合併兩個有序鍊錶 21
合併k個排序鍊錶 23
5 分隔鍊錶 725
6 兩個鍊錶求和 (個位數在右邊 需要用棧)445
兩鍊錶求和(個位數在左邊無需用棧) 2
7 鍊錶元素按奇偶位置聚集 328
分隔鍊錶 (相對於給定值的大小)86
8 判斷鍊錶是否有環 141
找出環形鍊錶的入口節點 142
找出兩個無環鏈表的焦點 160
10對鍊錶進行插入排序 147
11 複雜鍊錶的複製(牛客)
鍊錶專題 4 鍊錶
鍊錶是一大堆節點合起來連起來組成的表的總稱。其中每個節點中都有指標變數指向列表中的下乙個節點。鍊錶中第乙個節點被稱之為表頭 head 所以將第乙個節點的指標變數命名為head。最後乙個節點並沒有神馬特殊的名字,但是它 最後乙個節點 有一項特殊的屬性 最後乙個節點將null作為最後乙個變數的值 所以檢...
leetCode 鍊錶專題
sort a linked list in o n log n time using constant space complexity.用歸併排序 其中只是建立了乙個prehead節點 占用空間o 1 時間o nlogn public class solution 常規合併排序思路 listnod...
LeetCode 鍊錶專題
返回兩個鍊錶相交的節點 class solution object def getintersectionnode self,heada,headb type head1,head1 listnode rtype listnode if not heada and not headb return ...