Title Description
Given a sorted list, delete all the duplicate elements, so that each element occurs only once.
Example 1:
输入: 1->1->2
输出: 1->2
Example 2:
输入: 1->1->2->3->3
输出: 1->2->3
analysis
Speed pointer may be used to cover the element repeats, can also be covered using a recursive method.
Code
Pointer speed
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (!head || !head -> next) return head;
ListNode* p = head;
ListNode* q = head -> next;
while (p -> next != NULL && p != NULL)
if (p->val == q -> val) {
p -> next = q ->next;
q = q -> next;
}
else {
p = p -> next;
q = q -> next;
}
}
};
Recursion
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (!head || !head -> next) return head;
head -> next = deleteDuplicates(head -> next);
if (head -> next -> val == head ->val) head = head -> next;
return head;
}
};