82. 删除排序链表中的重复元素 II

Posted 这是一个很随便的名字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了82. 删除排序链表中的重复元素 II相关的知识,希望对你有一定的参考价值。

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。

返回同样按升序排列的结果链表。

示例 1:


输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]
示例 2:


输入:head = [1,1,1,2,3]
输出:[2,3]

 

提示:

链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序排列

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(!head) return head;
        ListNode *pre = head,*p = head;
        head = NULL;
        while(p)
        {
            cout<<p->val<<endl;
            int cnt = 0;
            while(p&&p->next)
            {
                if(p->val==p->next->val) cnt++;
                else break;
                p = p->next;
            }
            if(!cnt)
            {
                if(!head) head = pre = p;
                else pre->next = p,pre=p;
                
            }
            p = p->next;
        }
        pre->next = NULL;
        
        return head;
    }
};

以上是关于82. 删除排序链表中的重复元素 II的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 82. 删除排序链表中的重复元素 II

Leetcode 82. 删除排序链表中的重复元素 II

迭代LeetCode 82. 删除排序链表中的重复元素 II

LeetCode 82. 删除排序链表中的重复元素 II

LeetCode 82. 删除排序链表中的重复元素 II

链表82. 删除排序链表中的重复元素 II