一、題目描述
給定一個已排序的鏈表的頭head,刪除所有重復的元素,使每個元素只出現一次。返回已排序的鏈表。

二、題目解析
由于給定的鏈表是排好序的,因此重復的元素在鏈表中出現的位置是連續的,這個很關鍵。
因此我們只需要對鏈表進行一次遍歷,就可以刪除重復的元素。
具體操作如下:
1、設置一個指針cur,指向鏈表的頭節點,從鏈表的頭節點開始訪問每一個節點。

2、開始不斷遍歷鏈表。
3、在訪問過程中,只要當前節點和當前節點的下一個節點有值,就不斷訪問下去
4、當前節點和當前節點的下一個節點有兩種關系。
5、當前節點和當前節點的下一個節點相同,此時要刪除重復元素, 由于鏈表已經是排序的,所以去重操作只需要跳過后面這個重復的節點就行。
6、當前節點和當前節點的下一個節點不相同,那么 cur 這個節點可以保留下來,繼續訪問后面的節點
三、參考代碼
// LeetCode 100題精講:https://mp.weixin.qq.com/s/yznC53g46phq3qF7V4-obA //作者:程序員吳師兄 //https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ classSolution{ publicListNodedeleteDuplicates(ListNodehead){ //從鏈表的頭節點開始訪問每一個節點 ListNodecur=head; //在訪問過程中,只要當前節點和當前節點的下一個節點有值,就不斷訪問下去 while(cur!=null&&cur.next!=null){ //當前節點和當前節點的下一個節點有兩種關系 //1、當前節點和當前節點的下一個節點相同,此時要刪除重復元素 //由于鏈表已經是排序的,所以去重操作只需要跳過后面這個重復的節點就行 if(cur.val==cur.next.val){ //執行這個操作之后,cur.next被跳過去了 cur.next=cur.next.next; //2、當前節點和當前節點的下一個節點不相同,那么cur這個節點可以保留下來,繼續訪問后面的節點 }else{ //繼續訪問后面的節點 cur=cur.next; } } //返回鏈表的頭節點就是結果 returnhead; } }
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Val
+關注
關注
0文章
3瀏覽量
8460 -
Headset
+關注
關注
0文章
13瀏覽量
10587 -
null
+關注
關注
0文章
19瀏覽量
4306
原文標題:LeetCode 83:刪除排序鏈表中的重復元素
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
講解鏈表的刪除、修改以及插入
上期介紹了動態鏈表怎么建立,以及使用循環的方式怎么輸出整個鏈表中各個節點的數據,這期主要講解 鏈表的刪除、修改以及插入 !
發表于 01-13 15:25
?3638次閱讀
python去除列表重復元素的簡單操作
的速度差別 m = ['b','c','d','b','c','a','a'] n = {}.fromkeys(m).keys() print n 這兩種都有個缺點,祛除重復元素后排序變了
發表于 12-21 15:19
玩轉C語言鏈表-鏈表各類操作詳解
鏈表概述 鏈表是一種常見的重要的數據結構。它是動態地進行存儲分配的一種結構。它可以根據需要開辟內存單元。鏈表有一個“頭指針”變量,以head表示,它存放一個地址。該地址指向一個元素
發表于 09-18 13:30
Labview如何實現相鄰重復元素合并成一個
比如輸入一個數組AAAABBBBBCCCCCDDDDAAAA輸出ABCDA,只需要去重相鄰元素,處理后間隔可允許重復元素出現
發表于 10-17 14:22
如何進行單鏈表的查找、插入與刪除的詳細介紹包括了算法和源程序
單鏈表的查找、插入與刪除。設計算法,實現線性結構上的單鏈表的產生以及元素的查找、插入與刪除。具體實現要求:
發表于 07-16 08:00
?22次下載
LeetCode 26:刪除有序數組中的重復項
在每次遍歷過程中,比較 i 和 j 指向的元素值大小,把大的元素填充到 cur 的位置,填充完畢說明那個元素已經放置在它應該放置的位置,不需要在管它了,把 cur 向前移動,同時把 i
鏈表的基礎知識
,也就是數組,數組的每個元素之間的地址是連續的;對于鏈式存儲來說,也就是平常所說的鏈表,鏈表每個元素之間的地址并不是連續的,而是分散的,他們之間的聯系通過結點的 next 指針來建立。
java的util包下有哪些類
地插入、刪除和訪問元素。 HashSet:無序的集合,不允許重復元素。 LinkedHashSet:有序的集合,不允許重復元素。 TreeSet:有序的集合,根據
淺析LeetCode 83刪除排序鏈表中的重復元素
評論