【算法专题–链表】删除排序链表中的重复元素 — 高频面试题(图文详解,小白一看就懂!!)

作者 : admin 本文共938个字,预计阅读时间需要3分钟 发布时间: 2024-06-17 共1人阅读

目录

一、前言

二、题目描述 

三、解题方法 

⭐双指针

四、总结与提炼

五、共勉  


一、前言

       删除排序链表中的重复元素这道题,可以说是–链表专题–,最经典的一道题,也是在面试中频率最高的一道题目,通常在面试中,面试官可能会从多个方面考察这道题目,所以大家需要对这道题目非常熟悉哦!!
      本片博客就来详细的讲讲解一下 删除排序链表中的重复元素 的实现方法,让我们的面试变的更加顺利!!!

二、题目描述 

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 

【算法专题–链表】删除排序链表中的重复元素 — 高频面试题(图文详解,小白一看就懂!!)插图

三、解题方法 

⭐双指针

这道题要  删除链表中的重复节点

  • 首先删除一个链表节点,是通过修改其上一个节点和下一个节点之间的连接关系实现的。 

【算法专题–链表】删除排序链表中的重复元素 — 高频面试题(图文详解,小白一看就懂!!)插图(1)

  •  其次链表有序,因此我们要删除那些重复元素,可以用一个指针指向当前节点的值,另一个指针去找到下一个与它值不同的节点,然后建立这两个节点的连接,从而删除那些重复元素

【算法专题–链表】删除排序链表中的重复元素 — 高频面试题(图文详解,小白一看就懂!!)插图(2)

代码:

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;
    }
};

 四、总结与提炼

       最后我们来总结一下本文所介绍的内容,本文讲解来一道力扣中有关 删除排序链表中的重复元素的题目,这道题目是校招笔试面试中有关链表章节非常高频的一道题目大家下去一定要自己再画画图,分析一下,把这段代码逻辑自己实现一遍,才能更好地掌握 

五、共勉  

       以下就是我对 删除排序链表中的重复元素 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对 链表专题 的理解,请持续关注我哦!!! 

【算法专题–链表】删除排序链表中的重复元素 — 高频面试题(图文详解,小白一看就懂!!)插图(3)

本站无任何商业行为
个人在线分享 » 【算法专题–链表】删除排序链表中的重复元素 — 高频面试题(图文详解,小白一看就懂!!)
E-->