题目
解题
方法1:直接思路 ,遍历一遍,把相同的跳过去
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* cur = head;
while(cur && cur->next)
{
if(cur->val == cur->next->val)
{
cur->next = cur->next->next;
}
else
{
cur = cur->next;
}
}
return head;
}
};
方法2:递归法,递归每次都是看完答案之后觉得“对,就是应该这么做” 那即便是看完答案了 也尽量复述一遍,给它简单化,好像只有这么一个值
class Solution{
public:
ListNode* deleteDuplicates(ListNode * head)
{
if(!head || !head->next) return head;
head->next = deleteDuplicates(head->next);//递归公式!!!当前值的下一个值是谁
return (head->val == head->next->val)?head->next:head;
//写完递归公式之后就要往最简单的方面去考虑了,如果两个值相等那么直接跳过当前值,如果不相同,那么还是返回当前值
}
};