Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.
最初我的代码
ListNode *deleteDuplicates(ListNode *head) {
// write your code here
if(head==NULL) return NULL;
ListNode *p;
p=head;
while(p->next){
if(p->next->val==p->val){
p->next=p->next->next;
}
else p=p->next;
}
return p;
}
这里错在,最终输出结果p指向的是链表的最后一个元素,而不是链表头
结果如下:
输入
0->1->2->3->7->null
输出
7->null
期望答案
0->1->2->3->7->null
修改后正确答案
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(!head) return NULL;
ListNode *p,*pre=new ListNode(-1);
pre->next=head; p=head;
while(p->next){
if(p->next->val==p->val){
p->next=p->next->next;
}
else p=p->next;
}
return pre->next;
}