維護兩個指針,第一個指針指向鏈表沒有重複元素的最後一個位置,第二個指針向後掃描,直到末尾。嚴格來說,在C++中需要手動釋放內存。但在算法題或者Java中不需要這麼做。
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(head==NULL) return head;
ListNode* cur = head;
ListNode* p = head->next;
while(p!=NULL){
if(cur->val!=p->val) {
cur->next = p;
cur = p;
}
p = p->next;
}
cur->next = NULL;
return head;
}
};