当前位置:网站首页>29. 删除链表中重复的节点
29. 删除链表中重复的节点
2022-08-02 02:20:00 【Hunter_Kevin】
题目
在一个排序的链表中,存在重复的节点,请删除该链表中重复的节点,重复的节点不保留。
数据范围
链表中节点 val 值取值范围 [0,100]。
链表长度 [0,100]。
样例1
输入:1->2->3->3->4->4->5
输出:1->2->5
样例2
输入:1->1->1->2->3
输出:2->3
代码
- 因为头节点都可能被删掉,所以创建一个虚拟头节点指向head,过程中就不用处理第一次插入节点时的判断操作,最终返回虚拟节点的next即可
- 双指针遍历链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
class Solution {
public:
ListNode* deleteDuplication(ListNode* head) {
if(!head || !head->next)return head;//如果链表为空或只有一个节点,则之间return head
ListNode * pre = head, *cur = head, *ans = new ListNode(-1);//虚拟节点
ListNode * tail = ans; //操作链表的尾指针
while(cur){
//当没有遍历到NULL时,一直遍历链表
int cnt = 0;//统计pre和cur节点中有多少个重复的节点
//当cur不为空并且前后指针的值相同时,一直移动cur指针并且cnt++
while(cur && pre->val == cur->val)cur = cur->next, cnt++;
if(cnt <= 1){
//如果没有pre跟cur之间的节点值没有重复
tail->next = pre;//把pre节点插入到tail后面
tail = tail->next;//更新tail尾指针
pre = cur;//把pre重新置于跟cur同一个位置
}else{
//如果有重复
if(!cur)tail->next = NULL;//当此时是在链表末尾出现重复,则更新tail->next为NULL,下次再进入循环时cur为空会结束循环
pre = cur;//把pre重新置于跟cur同一个位置
}
}
return ans->next;//返回虚拟节点的next
}
};
边栏推荐
- Redis Subscription and Redis Stream
- 一次SQL优化,数据库查询速度提升 60 倍
- Oracle19c安装图文教程
- From 2023 onwards, these regions will be able to obtain a certificate with a score lower than 45 in the soft examination.
- 接口测试神器Apifox究竟有多香?
- AI target segmentation capability for fast video cutout without green screen
- What to study after the PMP exam?The soft exam ahead is waiting for you~
- Golang分布式应用之定时任务
- Scheduled tasks for distributed applications in Golang
- cocos中使用async await异步加载资源
猜你喜欢
随机推荐
Nanoprobes丨1-巯基-(三甘醇)甲醚功能化金纳米颗粒
Golang分布式应用之Redis
Constructor instance method inheritance of typescript37-class (extends)
Redis Subscription and Redis Stream
nacos启动报错,已配置数据库,单机启动
2022河南青训联赛第(三)场
Good News | AR opens a new model for the textile industry, and ALVA Systems wins another award!
Effects of Scraping and Aggregation
libcurl访问url保存为文件的简单示例
Safety (1)
What to study after the PMP exam?The soft exam ahead is waiting for you~
通用客户端架构
2022 NPDP take an examination of how the results?How to query?
[ORB_SLAM2] SetPose, UpdatePoseMatrices
软件测试 接口自动化测试 pytest框架封装 requests库 封装统一请求和多个基础路径处理 接口关联封装 测试用例写在yaml文件中 数据热加载(动态参数) 断言
AntPathMatcher uses
BioVendor人俱乐部细胞蛋白(CC16)Elisa试剂盒研究领域
Simple example of libcurl accessing url saved as file
Electronic Manufacturing Warehouse Barcode Management System Solution
PHP uses PHPRedis and Predis