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

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

https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        //保留原链表中只存在一次的元素结点  可能会删除头结点 所以做一个虚拟头结点  
        if(head == nullptr || head->next == nullptr) return head;
        ListNode temp(-1);
        temp.next = head;
        ListNode* virhead = &temp;
        ListNode* p = virhead;
		//处理head链表
        while(p->next != nullptr && p->next->next != nullptr)
        {           
		  //如果有相同元素
            if(p->next->val == p->next->next->val)
            {
			  //找出是不是相同元素的范围 p --- last 前开后闭区间 
                ListNode* last = p->next->next;
                while(last->next != nullptr &&last->next->val == p->next->val)
                {
                    last = last->next;
                }
			  //删除这个区间
                ListNode* del = p->next;
                while(del != last)
                {
                    p->next = del->next;
                    delete  del;
                    del = p->next;
                }
                del = p->next;
                p->next = del->next;
                delete del;
                continue;
            }
            p = p->next;
        }

        return virhead->next;

    }
};

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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