演算法 刪除鍊錶重複元素,只保留非重複元素

2022-03-24 07:14:01 字數 851 閱讀 2828

/**

* definition for singly-linked list.

* public class listnode

* }核心思想:判斷當前節點是否需要刪除的方法是檢查當前節點是否與相鄰的前後節點相等。

定義乙個fast指標來遍歷鍊錶

定義乙個prefast指標來記錄fast的前一位

定義乙個slow指標來記錄刪除以後的鍊錶末元素

fast指標和prefast指標不斷的往後走

如果判斷fast節點不需要刪除,則slow指標的next指向fast節點

如果判斷fast節點需要刪除,則slow指標不動,fast和prefast往後移動一步,以此類推

注意: 對於要對列表修改的場景要注意是否會修改頭節點,如果可能會修改頭結點,最好新定乙個prehead啞節點,這樣**處理更方便 */

class

solution

listnode prehead = new

listnode();

prehead.next =head;

prehead.val = -111111111;

listnode slow =prehead;

listnode prefast =prehead;

listnode fast =head;

while(fast != null

) fast =fast.next;

prefast =prefast.next;

}slow.next = null

;

return

prehead.next;

}}

刪除鍊錶重複元素(鍊錶去重)

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。鍊錶類的定義 class listnode 遞迴做法 public static listnode deleteduplication list...

鍊錶刪除重複元素1,刪除重複元素2,

刪除排序鍊錶中的重複元素 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2 示例 2 輸入 1 1 2 3 3 輸出 1 2 3 思路 很簡單。先將兩個指標進行操作,start,end然後判斷end是否等於空即可 definition for s...

較 鍊錶刪除重複元素

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 這道題首先要注意,重複元素乙個不留,且開頭元素可能重複,所以如果我們直接在原煉表上操作會比較麻煩。這裡採用選擇非重複節點構建新鍊錶的方式進行刪除...