请选择 进入手机版 | 继续访问电脑版

牛客(删除链表中重复节点)

[复制链接]
小甜心 发表于 2021-1-2 12:14:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
题目要求:

题目链接
方法:直接删除法
在遍历单链表的时候,查抄当前节点与下一点是否为相同值,如果相同,继续查找相同值的最大长度,然后指针改变指向。
图示:

实现代码:
  1. class Solution {public:    ListNode* deleteDuplication(ListNode* pHead){        //链表为空链表大概只有一个结点,直接返转头节点        if(pHead==NULL || pHead->next==NULL)            return pHead;        //pre结点用来链接非重复节点        ListNode *pre = NULL;        ListNode *cur = pHead;        ListNode *next = pHead->next;        while(next)        {            //如果cur->val 和 next->val差异,pre cur next一起往后移动            if(cur->val != next->val)            {                pre = cur;                cur = next;                next = next->next;            }            else            {                //寻找和当前cur->vsl相同的所有节点                while(next && cur->val==next->val)                {                    next = next->next;                }                if(pre)                    pre->next = next;                else                    //如果当前pre是NULL,将next作为头节点                    pHead = next;                //将重复节点释放                while(cur!=next)                {                    ListNode *del = cur;                    cur = cur->next;                    free(del);                }            }            if(cur)                next = cur->next;        }        return pHead;    }};
复制代码
来源:https://blog.csdn.net/weixin_45905158/article/details/112058559
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )