剑指Offer——JZ56.删除链表中重复的结点【前驱后继指针】

网友投稿 597 2022-11-19

剑指Offer——JZ56.删除链表中重复的结点【前驱后继指针】

剑指Offer——JZ56.删除链表中重复的结点【前驱后继指针】

​​题目传送门​​

题解

注意重复的结点一个也不保留因为第一个结点也可能是重复的,所以预先创建一个头,方便代码书写,更美观。

AC-Code

/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { if(!pHead) return NULL; ListNode* rHead = new ListNode(-1); rHead->next = pHead; ListNode* pre = rHead; ListNode* now = pHead; while(now) { if(now->next && now->next->val == now->val) { // 当前节点有重复 ListNode* pnxt = now->next; while(pnxt && pnxt->val == now->val) // 跳过重复 pnxt = pnxt->next; pre->next = pnxt; // pre跳过重复,直接指向下一个。 now = pnxt; // 更新待判断结点,注意,这里pre不能更新,因为now可能也是重复结点 } else { // 正常遍历即可 pre = now; now = now->next; } } return rHead->next; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:剑指Offer——JZ57.二叉树的下一个结点【中序遍历】
下一篇:剑指Offer——JZ67.剪绳子【DP | 贪心】
相关文章

 发表评论

暂时没有评论,来抢沙发吧~