Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
删除链表中重复出现的节点,和83题类似
https://cloud.tencent.com/developer/article/1019218
难点在于重复出现的第一个也不能保留,
所以要遇到重复的时候要一直找到不重复的为止,判断它与后一个节点不一致时才能加入答案
代码语言:javascript复制/**
* 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) {
ListNode* result=new ListNode(0);
ListNode* pre=result;
pre->next=head;
while(head && head->next)
{
if(head->val!=head->next->val)
pre=pre->next;
else
{
while(head->next!=NULL)
{
if(head->val!=head->next->val) break;
head=head->next;
}
pre->next=head->next;
}
head=head->next;
}
return result->next;
}
};