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

删除链表中重复的结点

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

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    
    ListNode* remove(ListNode *p){
        ListNode* t;
        int val = p->val;
        while(p && p->val == val){
            t = p;
            p = p->next;
            free(t);
        }
        return p;
    }
    
    ListNode* deleteDuplication(ListNode* pHead) {
        if(!pHead || !pHead->next) return pHead;
        ListNode *cur = pHead, *next = NULL, *temp = NULL;
        ListNode *res = new ListNode(0);
        res->next = pHead;
        cur = res;
        while(cur->next){
            if(cur->next && cur->next->next){
                if(cur->next->val == cur->next->next->val){
                    temp = remove(cur->next);
                    cur->next = temp;
                    continue;
                }
            }
            cur = cur->next;
        }
        return res->next;

    }
};
全部评论

相关推荐

昨天 12:24
重庆大学 运营
坏消息:和好工作擦肩而过
给点吧求求了:怎么可能因为差几秒,估计就是简历更好看婉拒了
点赞 评论 收藏
分享
凉风落木楚山秋:哈工爷200也去吗
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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