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
.
1、每找到一个相同元素的节点则直接删除
ListNode *deleteDuplicates(ListNode *head) {
if(head==nullptr||head->next==nullptr) return head;
ListNode *curNode=head;
while(curNode->next)
{
if(curNode->val==curNode->next->val) curNode->next=curNode->next->next;
else curNode=curNode->next;
}
return head;
}
2、找到多个相同元素的节点,一次删除
ListNode *deleteDuplicates(ListNode *head) {
if(head==nullptr||head->next==nullptr) return head;
ListNode *curNode=head;
ListNode *nodeIndex=nullptr;
while(curNode)
{
if(curNode->next&&(curNode->val==curNode->next->val))
{
nodeIndex=curNode->next;
while(nodeIndex&&(nodeIndex->val==curNode->val))
{
nodeIndex=nodeIndex->next;
}
curNode->next=nodeIndex;
}
curNode=curNode->next;
}
return head;
}