题解 | #删除有序链表中重复的元素-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;
    }//如果不存在head或者只有一个节点,直接返回
    typedef struct ListNode Node;
    Node* pHead=(Node*)malloc(sizeof(Node));
    pHead->next=head;//新建空指针,用来最终的返回
    Node* cur=head;//目前指针所在的位置
    Node* prev=pHead;//空指针
    Node* next=head->next;//下一指针的位置
    while(cur&&cur->next){//cur和next都存在
        if(cur->val==next->val){//两个相等
            while(next->next->val==next->val&&next->next!=NULL){
                next=next->next;//直接跳过
            }
            if(next->next==NULL){
                prev->next=NULL;
                return pHead->next;
            }
            cur=next->next;
            prev->next=cur;
            next=cur->next;//跳过两个相同数值之间所有节点
        }else{
            prev=cur;
            cur=next;
            next=next->next;//向后延申
        }
    }
    return pHead->next;
}

全部评论

相关推荐

企业都这么缺人了吗?缺人为什么还给白菜价!
真起不了响亮的名字:我给你出个主意,把公司报出来,让牛友去投,岂不美哉
点赞 评论 收藏
分享
06-19 13:40
武汉大学 Java
点赞 评论 收藏
分享
一tiao酸菜鱼:秋招还没正式开始呢,就准备有结果了。。。。?
点赞 评论 收藏
分享
牛客848095834号:举报了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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