本文共 928 字,大约阅读时间需要 3 分钟。
题目:
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
代码:
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { if(pHead == nullptr || pHead->next == nullptr) return pHead; ListNode* head = new ListNode(-1); head->next = pHead; ListNode* pre = head; ListNode* cur = pHead; while(cur != nullptr && cur->next != nullptr) { if(cur->val == cur->next->val) { int val = cur->val; while(cur != nullptr && cur->val == val) cur = cur->next; pre->next = cur; } else{ pre = cur; cur = cur->next; } } return head->next; }};
参考资料:
《剑指offer》
转载地址:http://wtwab.baihongyu.com/