题目:删除有序链表中重复的元素,对于重复的元素只保留一个。比如Given 1->1->2
, return 1->2
。Given
1->1->2->3->3
, return 1->2->3
。
思路:题目很简单,就是设定2个指针,一前一后比较,如果前面指针指向的值和后面的指针指向的值相同,将后面指针指向的元素move掉
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if(head==NULL){
return NULL;
}
ListNode *p1=head;
ListNode *p2=p1->next;
if(p2==NULL){
return p1;
}
while(p2){
if(p1->val==p2->val){
p1->next=p2->next;
p2=p1->next;
}else{
p2=p2->next;
p1=p1->next;
}
}
return head;
}
};