在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
判重、全删
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if (pHead == nullptr || pHead->next == nullptr) { return pHead; } else { ListNode head(pHead->val - 1); head.next = pHead; ListNode *last = &head, *current = head.next; while (current != nullptr) { if (current->next != nullptr &¤t->val == current->next->val) { while (current->next != nullptr && current->val == current->next->val) { ListNode *tail = current->next->next; current->next = tail; } current = current->next; last->next = current; } else { last = current; current = current->next; } } return head.next; } } };
|