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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理