删除链表中的重复元素
题目
题目分析
递归法:
考虑终止条件,当链表中只有一个元素的时候,不可能重复。返回的值应该返回的自然是已经去重的链表的头节点。宏观上考虑,此时head.next已经指向一个去重的链表了,而根据第二步,我应该返回一个去重的链表的头节点。因此这一步应该做的是判断当前的head和head.next是否相等,如果相等则说明重了,返回head.next,否则返回head。
代码实现
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(!head||!head->next)
return head;
head->next=deleteDuplicates(head->next);
if(head->val==head->next->val) head=head->next;
return head;
}
};