Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given
Given
This is the simplest question. But how many people can get it right at a try?
Given
1->1->2
, return 1->2
.Given
1->1->2->3->3
, return 1->2->3
/** * 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) { if(!head) return NULL; ListNode *prev = head, *curr = head->next; while(curr) { if(curr->val == prev->val) { prev->next = curr->next; delete curr; } else { prev = curr; } curr = curr->next; } return head; } };