For example,
Given
Given
1->1->2
, return
1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
开始的时候想着还要free啥的,结果超时,果断去掉free,AC。。
有一点需要注意,链表中有连续两个以上重复元素的处理方式。
代码贴上
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if ((!head) )//|| (!head->next))
return head;
ListNode* p = head;
while (p && p->next)
{
while (p->next && p->val == p->next->val)
p->next = p->next->next;
p = p->next;
}
return head;
}
};