Given a sorted Linked List, delete all nodes that have duplicate numbers, leaving onlyDistinctNumbers from the original list.
Example 1:
Input: 1->2->3->3->4->4->5Output: 1->2->5
Example 2:
Input: 1->1->1->2->3Output: 2->3
AC code:
/** * 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* dummy = new ListNode(0); dummy->next = head; ListNode* p = dummy; while (p->next != NULL && p->next->next != NULL) { if (p->next->val == p->next->next->val) { int sameNum = p->next->val; while (p->next != NULL && p->next->val == sameNum) p->next = p->next->next; } else { p = p->next; } } return dummy->next; }};
Runtime: 4 MS, faster than 100.00% of C ++ online submissions for remove duplicates from sorted List II.
82. remove duplicates from sorted List II