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

删除链表中重复的结点

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

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* nextNode(ListNode* pHead){//找下一个不重复结点
        if(!pHead)
            return NULL;
        ListNode *p=pHead;
        bool flag=0;
        while(p->next){
            if(p->val==p->next->val){
                flag=1;
                p=p->next;
            }
            else if(flag){
                flag=0;
                p=p->next;
            }
            else
                break;
        }
        if(!flag)
            return p;
        return NULL;
    }
    ListNode* deleteDuplication(ListNode* pHead) {
        ListNode *head=nextNode(pHead),*p=head,*q=head;
        if(!head)
            return NULL;
        while(p->next){
            p=nextNode(p->next);
            q->next=p;
            if(!p)
                break;
            q=q->next;
        }
        return head;
    }
};

全部评论

相关推荐

04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
喜欢喜欢喜欢:这是我见过最长最臭的简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务