题解 | #删除有序链表中重复的元素-II#

删除有序链表中重复的元素-II

https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
 */
struct ListNode* deleteDuplicates(struct ListNode* head ) {
    // write code here
    if(head==NULL||head->next==NULL){
        return head;
    }

    struct ListNode *p=head,*q=head->next,*s=(struct ListNode*)malloc(sizeof(struct ListNode)),*s1=s;
    while(q){
        if(p->val==q->val){
            while (p->val==q->val) {//p->val!=q->val时,跳出
                p=p->next;
                q=q->next;
                if(!q){//若q为空
                    s1->next=NULL;
                    return s->next;
                }
            }
           
            //从新的开始
        }else {
        s1->next=p;//将单一元素链成新表
        s1=s1->next;
        
        }
        p=q;
        q=q->next;//节点移动
    }

    s1->next=p;
    p->next=NULL;
    return s->next;


}

全部评论

相关推荐

小叮当411:应该是1-3个月吧
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:15
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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