題目:刪除有序鏈表中重複的元素,對於重複的元素只保留一個。比如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;
}
};