從LeetCode學演算法 - 80 Linked List (9)
0082. Remove Duplicates from Sorted List II (Medium)
寫在前面:
請幫我隨手點開下面的SHOW EMBED並按5個like~
喜歡的話也可以幫我拍拍手~
(按讚不用錢,感謝支持寫作~)
Question:
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example 1:
Input: 1->2->3->3->4->4->5
Output: 1->2->5
Example 2:
Input: 1->1->1->2->3
Output: 2->3
分析/解題:
給定一個排序好的鏈結串列,將擁有重複的數字的節點全數刪去,
只保留原先在串列上相異的數字。
我們之前就嘗試過從鏈結串列刪去節點的題目了,
只是今天這組更激進一點XD
原本是刪到剩一個即可,現在變成要將重複的全都刪掉,
那麼,該怎麼辦呢?
由於有可能刪到第一個,一般來說這種狀況,
習慣上會開出一個dummy node做為不會變動的節點參照,
我們先將其叫做dum,簡單將dum的next連接至head即可。
接下來要處理的是:我們要記得數值一致的節點群前面的那一個節點,
這樣刪去的時候才能將前後重新連接上。
因此,我們需要一個節點記錄,這裡將它叫做pre;
另一個節點則做為迭代用,記錄現在所在的位置,將其稱做cur,
且就位置關係來說,pre的next應該會是cur。
開始時pre的起始點應該是dum,這樣cur會從head開始,
當cur還沒走到底的時候要進行迴圈遍歷。…