-----QUESTION-----
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
-----SOLUTION-----
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if(!head) return head;
ListNode *previous = NULL;
ListNode *current = head;
bool repeat = false;
while(current)
{
while(current->next && current->val == current->next->val)
{
current = current->next;
repeat = true;
}
if(repeat && previous!= NULL)
{
previous->next = current->next;
}
else if(!repeat)
{
if(!previous) head = current;
previous = current;
}
current = current->next;
repeat = false;
}
if(!previous) return previous;
return head;
}
};