维护两个指针,第一个指针指向链表没有重复元素的最后一个位置,第二个指针向后扫描,直到末尾。严格来说,在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;
}
};