当前位置:网站首页>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
}
};
边栏推荐
猜你喜欢

Scheduled tasks for distributed applications in Golang
![[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)](/img/ed/ffced88c9d23c20ccf380494051381.jpg)
[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)

From 2023 onwards, these regions will be able to obtain a certificate with a score lower than 45 in the soft examination.

【LeetCode每日一题】——704.二分查找

Analysis of the status quo of digital transformation of manufacturing enterprises

Outsourcing worked for three years, it was abolished...
![[LeetCode Daily Question] - 103. Zigzag Level Order Traversal of Binary Tree](/img/b9/35813ae2972375fa728e3c11fab5d3.png)
[LeetCode Daily Question] - 103. Zigzag Level Order Traversal of Binary Tree

nacos启动报错,已配置数据库,单机启动

Constructor instance method inheritance of typescript37-class (extends)

Handwriting a blogging platform ~ Day 3
随机推荐
NIO's Sword
2022年NPDP考完多久出成绩?怎么查询?
Power button 1374. Generate each character string is an odd number
Redis Subscription and Redis Stream
Unable to log in to the Westward Journey
Electronic Manufacturing Warehouse Barcode Management System Solution
TKU remembers a single-point QPS optimization (I wish ITEYE is finally back)
GTK RGB图像绘制
【web】理解 Cookie 和 Session 机制
Software testing Interface automation testing Pytest framework encapsulates requests library Encapsulates unified request and multiple base path processing Interface association encapsulation Test cas
LeetCode Brushing Diary: 74. Searching 2D Matrix
十字光标太小怎么调节、CAD梦想画图算量技巧
¶ Backtop back to the top is not effective
Centos7 安装postgresql并开启远程访问
MySQL optimization strategy
力扣(LeetCode)213. 打家劫舍 II(2022.08.01)
工程师如何对待开源
Handwriting a blogging platform ~ the first day
记一次gorm事务及调试解决mysql死锁
to-be-read list