刪除排序鍊錶中的重複元素
給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
思路:很簡單。先將兩個指標進行操作,start,end然後判斷end是否等於空即可
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
end=start-
>next;
while
(end!=
null
)else
}return dummpy-
>next;}}
;
刪除排序鍊錶中的重複元素 ii
給定乙個排序鍊錶,刪除所有含有重複數字的節點,只保留原始鍊錶中 沒有重複出現 的數字。
示例 1:
輸入: 1->2->3->3->4->4->5
輸出: 1->2->5
示例 2:
輸入: 1->1->1->2->3
輸出: 2->3
思路
鍊錶操作最多四個指標 ,pre,start,end,next (next依賴於end)(end依賴於start)
首先將start指向鍊錶第乙個節點 ,while迴圈條件判斷start是否為空 然後判斷start->val==start->next->val 如果成立就會執行操作的是start向後移動,不過我們因該在條件中加入start!=null&&start->next!=null
如果pre->next!=start 就代表著中間有重複元素,採用方法一對鍊錶進行操作
否則 採用方法二對鍊錶進行操作(方法一方法二都在鍊錶中)
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
if(pre-
>next!=start)
//存在重複檔案
else
// 注意這裡不能寫成 else if(pre->next==start) 因為由於前面對pre進行了改變
}return dummty-
>next;}}
;
較 鍊錶刪除重複元素
在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 這道題首先要注意,重複元素乙個不留,且開頭元素可能重複,所以如果我們直接在原煉表上操作會比較麻煩。這裡採用選擇非重複節點構建新鍊錶的方式進行刪除...
演算法 刪除鍊錶重複元素,只保留非重複元素
definition for singly linked list.public class listnode 核心思想 判斷當前節點是否需要刪除的方法是檢查當前節點是否與相鄰的前後節點相等。定義乙個fast指標來遍歷鍊錶 定義乙個prefast指標來記錄fast的前一位 定義乙個slow指標來記錄...
STL vector刪除重複元素
stl提供了很多實用的演算法,這裡主要講解sort和unique演算法。刪除重複元素,首先將vector排序。sort vecsrc.begin vecsrc.end 然後使用unique演算法。vecsrc.erase unique vecsrc.begin vecsrc.end vecsrc.e...