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

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

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

C语言版本

struct ListNode* deleteDuplicates(struct ListNode* head ) {

    // write code here

    struct ListNode* cur = head;        //设置当前节点

    struct ListNode* tmp = head->next;  //设置当前节点的下一个节点

    if(!head) return head;              //如果输入为空,则直接返回head

    while(cur && tmp){                  //当前节点和下一节点不为空,则继续循环

        if(tmp->val == cur->val){       //如果下一节点与当前节点值相等,则下一节点继续指向next,跳过此次循环

            tmp=tmp->next;

            continue;

        }

        cur->next = tmp;                //如果当前节点与tmp(下一节点)的值不相等,则将cur->next指向tmp

        cur = cur->next;                //更新cur \ tmp

        tmp = cur->next;

    }

    cur->next = NULL;                   //退出循环后,对于[1,1]的情况可能出现直接返回[1,1],因此需要将cur->next指向空。

    //对于[1,1]的输入,由于tmp指向NULL导致退出循环,此时cur->next并没有正常赋值,因此需要退出循环后进行更新cur->next

    return head;

}

全部评论

相关推荐

05-16 11:16
已编辑
东华理工大学 Java
牛客737698141号:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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