题解 | #删除链表中重复的结点#
删除链表中重复的结点
https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if (pHead == nullptr) return nullptr; ListNode *dummyNode = new ListNode(0); dummyNode->next = pHead; ListNode *pPreNode = dummyNode; ListNode *pNode = pHead; ListNode *pNext = nullptr; while (pNode != nullptr && pNode->next != nullptr) { int val = pNode->val; pNext = pNode->next; bool needDeleted = false; if (pNode->val == pNext->val) needDeleted = true; if (!needDeleted) { pPreNode = pNode; pNode = pNode->next; continue; } else { ListNode *pToDel = pNode; while (pNode != nullptr && pNode->val == val) { pNext = pNode->next; delete pNode; pNode = pNext; } pPreNode->next = pNext; } } ListNode *result = dummyNode->next; delete dummyNode; return result; } };