0
点赞
收藏
分享

微信扫一扫

牛客网JZ76删除链表中重复的结点

拾光的Shelly 2022-02-05 阅读 65

描述:

在这里插入图片描述

示例:

在这里插入图片描述

在这里插入图片描述

代码:

class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead) {
        if(pHead == nullptr) return pHead;
        ListNode* head = new ListNode(0);
        head->next = pHead;
        ListNode* prev = head;
        ListNode* last = head->next;
        while(last != nullptr)
        {
            while(last->next != nullptr && last->val != last->next->val)
            {
                prev = prev->next;
                last = last->next;
            }
            while(last->next != nullptr && last->val == last->next->val)
            {
                last = last->next;
            }
            if(prev->next != last) prev->next = last->next;
            last = last->next;
        }
        return head->next;
    }
};

步骤分析:

创立一个头结点head
头结点的存在只是方便删除里面的数据
定义两个指针,分别指向前面和后面
比较中间的重复的数字
然后用这两个指针进行删除

举报

相关推荐

0 条评论