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

删除链表中重复的结点

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

C++ 判断 next 不等于 next next 纠结了很久 希望长点记性

class Solution {
  public:
    ListNode* deleteDuplication(ListNode* pHead) {
        ListNode* L = new ListNode(-1), *p = L;
        p->next = pHead;
        ListNode* c = p;
        // next 和 next next 不相等
        while (c->next) {
            if (c->next->next && c->next->val == c->next->next->val) {
                ListNode* t = c->next;
                for (; t && c->next->val == t->val; t = t->next);
                c->next = t; // 而不是 c = t->next
            } else {
                cout << c->val << ' ' << c->next->val << ' ';
                c = c->next;
                p = p->next;
            }
            // cout << p->val << ' ';
        }
        return L->next;
    }
};

全部评论

相关推荐

zzzilik:没事的,才刚刚开始,后面会捞的,这个三天没人发起面试自动结束,但是面试官还是能看到简历,四月份主战场会慢慢捞
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-20 12:46
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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