Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2->3, return 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 == NULL || head->next == NULL)
return head;
ListNode* p = head->next;
int v = head->val;
if(v != p->val){
head->next = deleteDuplicates(p);
return head;
}
else{
while(p && p->val == v)
p = p->next;
return deleteDuplicates(p);
}
}
};
转载请注明原文地址: https://ju.6miu.com/read-670832.html