题解 | #删除链表中重复的结点#

删除链表中重复的结点

http://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead) {
        if(!pHead)return NULL;//判断是否为空链表
        set<int>arr;
        ListNode* p1=pHead;
        ListNode* p2=pHead->next;
        while(p2){//定义双指针,把重复的值加入set中
            if(p1->val==p2->val){
                arr.insert(p1->val);
            }
            p1=p1->next;
            p2=p2->next;
        }
        ListNode* newlist=new ListNode(-1);
        p1=newlist;
        newlist->next=pHead;
        p2=pHead;
        while(p2){
            if(arr.find(p2->val)!=arr.end()){//如果有重复的值
                p1->next=p2->next;//删除结点,后面补上
                p2=p2->next;//指针p2接着往后面走
            }
            else{//没有重复,两个指针都往后面走
                p1=p1->next;
                p2=p2->next;
            }
        }
        return newlist->next;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务