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

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

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

/**
 * struct ListNode {
 *  int val;
 *  struct ListNode *next;
 *  ListNode(int x) : val(x), next(nullptr) {}
 * };
 */

/*
class Solution {
  public:
    ListNode* deleteDuplicates(ListNode* head) {
        // 空链表
        if (head == nullptr) return nullptr;
        ListNode* dummy = new ListNode(-1);
        dummy->next = head;
        ListNode* pre = dummy;
        ListNode* cur = head;
        while (cur) {
            ListNode* next = cur->next;
            if (next == nullptr || cur->val != next->val) {
                cur->next = nullptr;
                pre->next = cur;
                pre = pre->next;
            }
            cur = next;
        }
        return dummy->next;
    }
};*/

/*
    pre
    ↓
dummy(-1) →  1  →  1  →  2  →  2  →  3  → NULL
             ↑     ↑
            cur   next

    pre
    ↓
dummy(-1) →  1  →  1  →  2  →  2  →  3  → NULL
             ↑     ↑
            cur   next


    pre
    ↓--------------+
dummy(-1) →  1  →  1  (x)  2  →  2  →  3  → NULL
                   |       ↑
                  NULL    next


                  pre
                   ↓
dummy(-1) →  1  →  1  (x)  2  →  2  →  3  → NULL
                           ↑     ↑
                          cur   next


                  pre
                   ↓
dummy(-1) →  1  →  1  (x)  2  →  2  →  3  → NULL
                                 ↑     ↑
                                cur   next

                  pre
                   ↓-------------+
dummy(-1) →  1  →  1  (x)  2  →  2  (x)  3  → NULL
                                 |       ↑
                                NULL    next

                                pre
                                 ↓
dummy(-1) →  1  →  1  (x)  2  →  2  (x)  3  → NULL
                                         ↑      ↑
                                        cur    next

                                pre
                                 ↓-------+
dummy(-1) →  1  →  1  (x)  2  →  2  (x)  3  (x)  NULL
                                         |        ↑
                                        NULL     next

                                        pre
                                         ↓
dummy(-1) →  1  →  1  (x)  2  →  2  (x)  3  (x)   NULL
                                                   ↑
                                                  cur

*/


class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        // 空链表
        if(head == nullptr) return nullptr;
        // 遍历指针
        ListNode* cur = head;
        // 指针当前和下一位不为空
        while(cur && cur->next) {
            // 如果当前与下一位相等则忽略下一位
            if(cur->val == cur->next->val) {
                cur->next = cur->next->next;
            }else{
                cur=cur->next;
            }
        }
        return head;
    }
};

全部评论

相关推荐

搜索部 首先说下timeline8.18,投递8.19,约一面8.21,晚上一面call约二面8.22,上午二面下午oc周末等待(8.23,8.24)8.25,offer一年前,我还是懵懵懂懂,高考完的暑假,只会提前学学高数,未来的画像是什么?我或许无法预测。开学后,自学Python,接单,无数个客户的ddl,偷偷摸摸一个人找自习的地方,这一步步竟然为后来的我,搭建工程能力的基础。大一上,我也要感谢我的第一位老板,让我接触到了实习,师兄带着我一步步入门,看他们写的飞书文档。大一下,导师带我参与企业项目,这让我渐渐发现,应该去实践,增长见识,而非局限当下,盯着自己的小新pro。不久后,第一波投递开始,结果当然是约面极少。盯着简历上的文字和ssob,我开始思考,确实很多可以去提升。带着些许不甘心,继续沉淀,慢慢的约面也越来越多,有的时候两天7场,准备完就接着下一个日程。这一次,也许是刚好到位吧,比较match,面试答的流利,关关难关关过,成为度孝子展望未来,依然是重重挑战,果然只有收到offer的那一刻是开心的。愿在百度星海拆解的每一段代码,都能成为丈量宇宙的诗行;此志终赴星河,而今迈步重铸天阶。屏幕前的你们,在无数个向星海奔赴的日夜,一定一定,会在未来化作群星回响的征程——请永远相信此刻埋首耕耘的自己!!!
一天三顿半:???百度提前批发 offer了?不是统一和正式批排序完再发吗我靠
百度求职进展汇总
点赞 评论 收藏
分享
吃就完事了:别找单做硬件的找做电源的,电源工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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