82. Remove Duplicates from Sorted List II
82. Remove Duplicates from Sorted List II
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
.
注意:head -> next -> val,也必须判断head -> next != nullptr;
/** * 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 == nullptr){ return nullptr; } ListNode* dummyNode = new ListNode(-1); dummyNode -> next = head; head = dummyNode; while(head -> next != nullptr && head -> next -> next != nullptr){ if(head -> next -> val == head -> next -> next -> val){ int flag = head -> next -> val; while(flag == head -> next -> val){ head -> next = head -> next -> next; if(head == nullptr || head -> next == nullptr){ break; } } } else{ head = head -> next; } } return dummyNode -> next; } };