leetcode 82. 删除排序链表中的重复元素 II

LeetCode算法题82:删除排序链表中的重复元素 II解析 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 这个题主要是需要在出现重复时,将前一个不重复数的节点的next指向重复数字之后,... 阅读详情

leetcode 82. 删除排序链表中的重复元素 II

题目描述

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

示例 1:

输入: 1->2->3->3->4->4->5
输出: 1->2->5

示例 2:

输入: 1->1->1->2->3
输出: 2->3

解题思路

这里定义一个新的链表,定义一个count来记录元素出现的个数,如果出现的次数大于等于2就表示是重复的元素,然后把非重复的链接到定义的新的链表上,最后需要注意的是,用的是当前的节点和下一个节点做比较,所以需要判读一下最后的count是否超过1,如果大于1表示最后的元素是重复的,我们直接把新链表的尾结点指向NULL;要是等于1,就把head的最后一个节点添加到新链表上。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(!head){   // 链表是否为空
            return NULL;
        }
        ListNode* newHead = new ListNode(-1);  // 定义一个新的链表,存储生成的新链表
        ListNode* cur = newHead;               // 移动新链表的节点
        int count = 1;                         // 记录元素出现的次数

        while(head->next){
            if(head->val == head->next->val){
                count ++;        // 如果元素相等,那count就加1
            } 
            else{
                if(count <= 1){   // 这里是去除重复的元素,当元素不相同时,count才小于等于1时,才把元素往newHead尾部添加
                    cur->next = head;
                    cur = cur->next;
                }
                count = 1; // count置位
            }
            head = head->next; // head的节点向前移动一个
        }
        // 这里是处理边界情况,这里head与head->next的元素做比较以后,head->next元素还不确定是否为重复的元素,这里需要判读一下count的次数,如果大于1,就表示是重复的元素,直接把cur的下一个节点置为空;否则,把head直接添加到cur上
        if (count > 1){    
            cur->next = NULL;
        }
        else{
            cur->next = head;
        }

        return newHead->next;
    }
};

欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步
在这里插入图片描述

Java实现 LeetCode 82 删除排序链表中的重复元素 II(二) 82. 删除排序链表中的重复元素 II 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 /** * Definition for ... 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode82:删除排序链表中的重复元素 II

本文介绍了如何删除已排序链表中所有重复节点,仅保留不同数字的解法。通过使用哑节点和前驱指针,可以高效跳过重复段并直接链接到非重复节点。算法时间复杂度为O(n),空间复杂度为O(1)。Java实现利用双指针遍历链表,当检测到重复时循环跳过所有相同值节点。该方法确保了链表每个节点只被访问一次,适用于链表长度在0到300之间的场景。

ylumwd的博客 520

82. 删除排序链表中的重复元素 II【 力扣(LeetCode) 】

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字。返回 已排序的链表。

yyh520025的博客 942

CH32V IAP跳转避坑指南:为什么你的APP跳不过去?从mstatus寄存器配置到函数属性详解

本文深入解析CH32V系列MCU的IAP跳转机制,从mstatus寄存器配置到函数属性优化,详细讲解如何避免APP跳转失败。文章涵盖地址准备、模式切换、跳转执行等关键步骤,并提供调试技巧与实战案例,帮助开发者快速解决CH32V IAP跳转中的常见问题。

weixin_30955617的博客 138

golang力扣leetcode 82.删除排序链表中的重复元素II

82.删除排序链表中的重复元素II82.删除排序链表中的重复元素II题解代码 82.删除排序链表中的重复元素II 82.删除排序链表中的重复元素II 题解 头节点是有可能被删除的,所以要加个cnt辅助一下 代码 package leetcode type ListNode struct { Val int Next *ListNode } func deleteDuplicates(head *ListNode) *ListNode { cnt := &ListNode{} cnt.N

清风 532

基于Mind+、MOTT实现人工智能

@基于Mind+、MOTT实现人工智能 人工智能实验 一、实验目的及要求 【一】实现人脸识别 【二】实现云数据库应用 【三】实现测温数据mqtt上传至物联网云平台 二、实验原理与内容 基于二哈实现多人人脸学习和识别 基于TinywebDB实现云数据库应用 基于EasyIoT实现mqtt数据上传。 三、实验软硬件环境 硬件:掌控板 软件:Mind+ 四、实验过程(实验步骤、记录、数据、分析) 1.基于二哈实现多人人脸学习和识别 ①在Mind+扩展上的传感器选项选择HUSKYLENS AI 摄像头 ②配置哈士

weixin_44606930的博客 2369

四大厂商网络设备巡检命令实战指南:华为、华三、锐捷、思科

本文详细介绍了华为、华三、锐捷、思科四大厂商网络设备的巡检命令实战指南,涵盖硬件状态、软件运行和网络功能等核心维度。通过具体命令示例和实用技巧,帮助网络工程师高效完成设备巡检,预防潜在故障,确保网络稳定运行。

weixin_29235923的博客 390

LeetCode 力扣 82. 删除排序链表中的重复元素 II

题目描述(中等难度) 给一个链表,如果一个数属于重复数字,就把这个数删除,一个都不留。 解法一 迭代 只需要两个指针,一个指针 pre 代表重复数字的前边的一个指针,另一个指针 cur 用来遍历链表。d 代表哨兵节点,用来简化边界条件,初始化为 head 指针的前一个节点。p 代表 pre,c 代表 cur。 d 1 2 3 3 3 4 cur 和 cur.next 不相等,pre 移到 cur...

wind_liang的博客 1052

YOLOv11 改进 - 检测头 | Detect_LSCD轻量共享卷积检测头:轻量化设计破解计算瓶颈,增强复杂场景目标感知能力

本文介绍了基于群归一化(GroupNorm)和共享卷积的轻量化检测头LSCD,并将其集成进YOLOv11。LSCD检测头充分利用了GroupNorm和共享卷积的优势,在保持特征信息有效融合的同时,减少计算量和运算复杂度。我们将LSCD的代码集成到YOLOv11检测头中,并在tasks文件中进行注册。实验证明,YOLOv11-LSCD在目标检测任务中取得了良好的效果。

魔改工程师的博客 2382

LeetCode 82. 删除排序链表中的重复元素 II

Description 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 来源:力扣(LeetCode) 链接:https://...

sunlanchang的博客 547

AgentScope Java 2.0 项目实战:使用AgentScope Builder 构建企业级多租户 AI Agent 平台

本文基于 AgentScope Builder 源码深度分析,系统讲解多租户 AI Agent 构建平台的完整开发流程。涵盖 Spring Boot 3.x + WebFlux 后端架构、React 18 + TypeScript 前端实现、HarnessAgent 运行时、CompositeFilesystem 多租户隔离、SSE 流式对话、6 种 IM 渠道接入(钉钉/飞书/企微/GitHub/GitLab)、Git 与 Nacos 技能市场、JWT 认证、Docker Sandbox 隔离等核心技术。

program哲学 715

【DRAM存储器六十五】DDR5介绍--训练相关之MPC、Read Training Pattern、Read Preamble Training Mode

简述DDR5 MPC操作和读训练时颗粒输出pattern的配置

highman110的博客 358

leetcode 82. 删除排序链表中的重复元素 II(python)

题目链接 题目描述: 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 解题思路: 1.对于每一个节点,需要判断是否等于前一个节点和后一个节点 2。对于最后一个节点,无论是否为重复节点,都需要单独处理 # Definition for singl

weixin_44740082的博客 295

ardupilot 获取避障传感器数据

本节主要记录自己学ardupilot的避障代码过程,首先看下怎么注册避障传感器,然后怎么获取避障数据。

陌城烟雨 5524

leetcode-82 | 删除排序链表中的重复元素 II

title: leetcode-82 | 删除排序链表中的重复元素 II date: 2019-5-8 10:01:45 comments: true categories: “leetcode” tags: - leetcode 中等难度 - 链表 题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3...

梦否 404

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LeetCode082_82. 删除排序链表中的重复元素 II

LeetCode082_82. 删除排序链表中的重复元素 II

luoyepiaoxue2014的博客 445

Leetcode 82. 删除排序链表中的重复元素 II C++

Leetcode 82. 删除排序链表中的重复元素 II 题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 测试样例 1. 输入: 1->2->3->3->4->4->5 输出: 1->2->5 2. 输入: 1->1->1->2->3 输出: 2->3 题解 用一个指针之前数字第一次出现之前的那个节点,然后如果其后的节点数字是重复的,则直接将这个指向为重复出现的节点。详细过程见代码

weixin_43750513的博客 313

LeetCode 82 . 删除排序链表中的重复元素 II

题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 题目链接 思路一:使用哑结点和快慢指针,快指针用于跳过重复的数组,慢指针用于和快指针拼接。 class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) ...

淦淦淦! 282

Leetcode-82:删除排序链表中的重复元素 II

题目描述: 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 思路: h -> 1 -> 2 -...

LifeIsGood 179

精选力扣500题 第44题 LeetCode 82. 删除排序链表中的重复元素 II【c++/java详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 存在一个按升序排列的链表,给你这个链表的头节点 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 <= 1

林深不见鹿 的博客 3374

LeetCode刷题笔记 82. 删除排序链表中的重复元素 II

82. 删除排序链表中的重复元素 II题目要求题解递归版迭代版 题目要求 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 题...

g534441921的博客 264

82. 删除排序链表中的重复元素 II - 力扣(LeetCode)

题目要求删除已排序的链表中的重复元素,且没有要求原地修改,因此我们很自然想到创建一个虚拟节点。若重复,跳过所有连续重复的节点,直到找到第一个不重复的节点。删除原始链表中所有重复数字的节点,只留下不同的数字。输入:head = [1,2,3,3,4,4,5]重复时,通过内层循环跳过所有连续重复节点(如。输入:head = [1,1,1,2,3](如链表末尾全为重复节点),设置。:遍历原始链表,寻找非重复节点。指向原链表头节点,用于遍历。:指向新链表,负责构建新链表。:跳过所有连续重复节点。

q1111111da的博客 492

Python描述 LeetCode 82. 删除排序链表中的重复元素 II

给定一个已排序的链表的头 , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。示例 1: 示例 2: 提示:双指针,找没有重复的结点

一起加油 827

LeetCode:82. 删除排序链表中的重复元素 II————中等

目录题目解题思路1Code运行结果解题思路2Code运行结果 题目 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 &

Kinght_123的博客 663

leetcode82.删除排序链表中的重复元素II

删除链表重复节点【基础算法精讲 08】

weixin_74175349的博客 292

LeetCode第82题_删除排序链表中的重复元素II

给定一个已排序的链表的头head,删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。

qq_40263592的博客 1410
上一篇: leetcode 74.搜素二维矩阵
下一篇: 归并排序
黑暗主宰
博客等级 码龄9年 72粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值