目录
一、前言
二、题目描述
三、解题方法
⭐双指针
四、总结与提炼
五、共勉
一、前言
删除排序链表中的重复元素这道题,可以说是--链表专题--,最经典的一道题,也是在面试中频率最高的一道题目,通常在面试中,面试官可能会从多个方面考察这道题目,所以大家需要对这道题目非常熟悉哦!!
本片博客就来详细的讲讲解一下 删除排序链表中的重复元素 的实现方法,让我们的面试变的更加顺利!!!
二、题目描述
给定一个已排序的链表的头
head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
三、解题方法
⭐双指针
这道题要 删除链表中的重复节点。
- 首先删除一个链表节点,是通过修改其上一个节点和下一个节点之间的连接关系实现的。
- 其次链表有序,因此我们要删除那些重复元素,可以用一个指针指向当前节点的值,另一个指针去找到下一个与它值不同的节点,然后建立这两个节点的连接,从而删除那些重复元素。
代码:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head)
{
// 双指针 思路
ListNode* cur = head;
ListNode* nextnode;
while(cur)
{
// 找到下一个不同值的节点,初始为当前节点的下一个节点
nextnode = cur->next;
while(nextnode && nextnode->val == cur->val)
{
// 找到 下一个不同值节点
nextnode = nextnode->next;
}
// 当前节点与下一个不同值节点建立连接
cur->next = nextnode;
// 更新当前节点
cur = nextnode;
}
return head;
}
};
四、总结与提炼
最后我们来总结一下本文所介绍的内容,本文讲解来一道力扣中有关 删除排序链表中的重复元素的题目,这道题目是校招笔试面试中有关链表章节非常高频的一道题目,大家下去一定要自己再画画图,分析一下,把这段代码逻辑自己实现一遍,才能更好地掌握
五、共勉
以下就是我对 删除排序链表中的重复元素 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对 链表专题 的理解,请持续关注我哦!!!