很简单的一个递归算法,做了一天的链表类型的题目,发现链表最需要注意的是头尾结点的问题。
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {//只保留只出现一次的数
if(!head||!head->next)
return head;
ListNode *p,*q;
p=head;
while(p->next&&p->val==p->next->val)//去掉头重复元素
{
p=p->next;
}
q=p->next;
if(p==head)//头结点没有重复
{
head->next=deleteDuplicates(q);
return head;
}
else//头结点重复了,就直接从下一个结点开始
return deleteDuplicates(q);
}
};