Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Return the linked list sorted as well.
Example 1:
Input: 1->2->3->3->4->4->5
Output: 1->2->5
Example 2:
Input: 1->1->1->2->3
Output: 2->3
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode dummy(-1);
ListNode* prev = &dummy;
dummy.next = head;
ListNode* head2 = prev;
prev = prev->next;
ListNode* cur;
while(prev)
{
cur = prev->next;
while(prev && cur && prev->val != cur->val)
{
prev = prev->next;
cur = prev->next;
head2 = head2->next;
}
while(prev && cur && prev->val == cur->val)
{
prev = prev->next;
cur = prev->next;
head2->next = cur;
}
prev = cur;
}
return dummy.next;
}