LeetCode主題整理 4 鍊錶及相關問題

2021-06-20 09:27:16 字數 1230 閱讀 2739

topic 1 反轉鍊錶

reverse linked list ii

在第m~n個節點中反轉單鏈表,注意這道題可以把**寫得很長,如果分為區間一[0,m-1],區間二[m-n],區間三[n+1,end]這三個區間的話。也可以寫得很短,如果仔細觀察發現其實只需要考慮第乙個區間是否為null就可以了。

reverse nodes in k group

每k個節點為乙個單位,反轉第1個單位之後,反轉第2個單位,反轉第i個單位,反轉最後乙個單位,如果最後乙個單位不足k個,就不進行反轉。非常有意思的一道題目,依然可以寫得很短,也可以寫得很長。如果你用遞迴的辦法去寫,可以很快寫完。如果你用迭代的辦法去寫,都會比較長。不管是否是呼叫了reverse linked list ii中的函式,或者直接寫乙個大迴圈。

reorder list

仔細觀察後,發現本題的規律是,把鍊錶後半段反轉,然後依次插入到鍊錶的前半段。

rotate list

旋轉鍊錶。

topic 2 從陣列排序遷移到鍊錶排序

insertion sort list

用鍊錶來模擬插入排序

partition

用鍊錶來模擬快排中的partition

sort list

用鍊錶來進行歸併排序,完成時間複雜度為o(n lgn),空間複雜度為o(1)的排序

merge two sorted lists

歸併兩個已經排好序的鍊錶

merge k sorted lists

歸併k個已經排好序的鍊錶

topic 3 環形鍊錶

linked list cycle

判斷乙個鍊錶是否有環

linked list cycle ii

如果乙個鍊錶有環,找到環的起始位置

topic 4 其它問題

copy list with random pointer 

拷貝鍊錶,鍊錶的節點除了有next指標,還有random指標,指向任意乙個點。

remove nth node from end of list

刪除從後向前數的第n個節點

remove duplicates from sorted list 

去掉鍊錶中的重複元素,使得原來鍊錶中的所有元素都出現並且只出現一次。

remove duplicates from sorted list ii

去掉鍊錶中的重複元素,使得原來鍊錶中的非重複元素都出現並且只出現一次,重複元素不出現。

4 鍊錶元件 LeetCode 817

問題描述 給定煉表頭結點 head,該鍊錶上的每個結點都有乙個唯一的整型值 同時給定列表 g,該列表是上述鍊錶中整型值的乙個子集。返回列表 g 中元件的個數,這裡對元件的定義為 鍊錶中一段極長連續結點的值 該值必須在列表 g 中 構成的集合。極長的含義是 這段連續結點的前面或後面結點不屬於g。示例 ...

鍊錶專題 4 鍊錶

鍊錶是一大堆節點合起來連起來組成的表的總稱。其中每個節點中都有指標變數指向列表中的下乙個節點。鍊錶中第乙個節點被稱之為表頭 head 所以將第乙個節點的指標變數命名為head。最後乙個節點並沒有神馬特殊的名字,但是它 最後乙個節點 有一項特殊的屬性 最後乙個節點將null作為最後乙個變數的值 所以檢...

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...