82. 删除排序链表中的重复元素 II
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
- 题目数据保证链表已经按升序 排列
思路:
简单链表题。
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(head==nullptr)return nullptr;
ListNode* dummy=new ListNode(-1);//虚拟头节点
ListNode* slow=dummy;
ListNode* fast=head;
int preval=head->val;//记录前一个节点的值
//初始化一下fast指针和preval
if(fast->next==nullptr||fast->next->val!=preval){
slow->next=fast;
slow=fast;
fast=fast->next;
}
while(fast!=nullptr){
//判断该数是否是重复的节点
if((fast->next==nullptr||fast->next->val!=fast->val)&&preval!=fast->val){
slow->next=fast;
slow=fast;
}
preval=fast->val;
fast=fast->next;
}
//最后尾结点是空
slow->next=nullptr;
return dummy->next;
}
};
本文来自博客园,作者:{BailanZ},转载请注明原文链接:https://www.cnblogs.com/BailanZ/p/16308263.html