题目
这里通过递归来解决,对于当前数字a来说,有两种情况
1.a的值和a的next值一样:这时候通过while 一直找到最后一个与a值相等的结点,再递归该节点的next
2.a的值和a的next值不一样:直接递归a节点的next;
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
if(head==NULL) return NULL;
if(head->next!=NULL && head->val==head->next->val)
{
while(head->next!=NULL && head->val==head->next->val)
{
head=head->next;
}
return deleteDuplicates(head->next);
}
head->next=deleteDuplicates(head->next);
return head;
}
};