手机版 欢迎访问it开发者社区(www.mfbz.cn)网站

当前位置: > 开发

C++:删除有序链表中的重复元素

时间:2021/4/3 21:28:41|来源:|点击: 次

删除有序链表中的重复元素(时间复杂度O(n))

给你一个升序有序链表(也可以是降序),让你删除其中的重复元素,仅将没有重复的元素输出出来。
核心思想:双指针联动

ListNode* deleteDuplicates(ListNode* head) {
        ListNode *p=new ListNode(0); //设置哨兵节点
        if(head == NULL  || head->next == NULL)  //空链或者只有一个元素直接返回
        {
            return head;
        }
        p->next=head;
        head=p;
        ListNode *left,*right;
        while(p->next)
        {
            left=p->next;
            right=left;
            while(right->next && right->next->val== left->val)  //满足循环条件时,执行right=right->next;
                right=right->next;
            if(left == right) p=p->next;  //判断是否存在重复值,if(有),P指针后移
            else p->next= right->next;   //else 没有,挂链。
        }
        return head->next;   //返回头节点
    }

大概操作如下,希望各位大佬多多指点。
在这里插入图片描述
看不清的话留言我再写发

上一篇:爬虫原理 下一篇:HLS中的a+b,a*b实现

Copyright © 2002-2019 某某自媒体运营 版权所有