力扣算法题83:删除排序链表中的重复元素

【简单】力扣算法题解析LeetCode83:删除排序链表中的重复元素 本文介绍如何删除已排序链表中的重复元素,确保每个元素仅出现一次。通过遍历链表,比较相邻节点的值,跳过重复节点即可实现。算法时间复杂度为O(n),空间复杂度为O(1)。提供Java代码实现,包含指针初始化和循环处理逻辑,最后返回修改后的链表头节点。附有示例和提示说明,帮助理解解题思路。 阅读详情

升序链表去重:删除排序链表中的重复元素

1. 首先看题目要求:

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

示例 1:
输入:head = [1,1,2] 输出:[1,2]

示例 2:
输入:head = [1,1,2,3,3] 输出:[1,2,3]

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序排列

2. 看看解题思路:

    //思路:
    //1、删除链表的重复元素本质上就是跳过重复的元素
    //2、首先排除空链表
    //3、删除的时候,如果前后的元素相等,则直接让cur不变,cur.next等于它的下一位
    //如果前后元素不相同,则把当前的cur指针移到不一样的那个位置,也就是cur = cur.next
    //4、最后直接返回head,也就是最后跳过重复元素后的链表

3. 接下来是代码:

class Solution {
    public ListNode deleteDuplicates(ListNode head) {

        //首先考虑空链表,若为空,直接返回
        if (head == null || head.next == null){
            return head;
        }
        //此时cur不为null
        ListNode cur = head;
       
        //当cur.next也不为null
        while (cur.next != null){
            //如果当前位置的元素等于后一个位置的元素
            if (cur.val == cur.next.val){
                //直接跳过它,例如(1,1,2)-->(1,2)
                cur.next = cur.next.next;
            } else {
                //如果cur和后一位元素不相等,就把cur的位置移到cur.next
                //例如(1,2),进行这一步操作后,cur.val = 1;cur.next.value = 2;
                cur = cur.next;
            }
        }
        return head;
    }

3. 代码运行过程:

			while (cur.next != null){
            //如果当前位置的元素等于后一个位置的元素
            if (cur.val == cur.next.val){
                //直接跳过它,例如(1,1,2)-->(1,2)
                cur.next = cur.next.next;
            } else {
                //如果cur和后一位元素不相等,就把cur的位置移到cur.next
                //例如(1,2),进行这一步操作后,cur.val = 1;cur.next.value = 2;
                cur = cur.next;
            }
        }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LeetCode - #83 删除排序链表中的重复元素 不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。 阅读详情

相关推荐

云模型在综合评价过程中的应用

目录 1 云模型标尺(标准云模型)的构建方法 1.1 通过正态云的“3En 规则”来表示评价论域 1.2 通过论域的边界值隶属度相等来表示评价论域 1.3 通过黄金分割法来表示评价论域 2 确定评价结果的过程 2.1 基本云发生器 2.2 X条件云发生器 2.3 两种方法的区别 综合评价问题一般分为以下六个步骤 1、明确评价目的; 2、确定被评价对象; 3、建立评价指标体系(包括收集评价指标的原始值、评价指标的若干预处理等); 4、确立与各项评价指标相对应的权重系数; 5、选..

weixin_62223576的博客 1万+

(链表)删除排序链表中的重复元素

此篇是针对链表的经典练习。

MrYin的博客 1487

给大一新生的蓝桥杯EDA备赛规划:从电路分析到立创EDA,如何用一年时间高效备赛?

本文为大一新生提供了一份系统的蓝桥杯EDA备赛规划,从电路分析基础到立创EDA实战操作,分阶段指导如何高效备赛。内容涵盖理论学习、软件操作、PCB设计专项提升及冲刺优化策略,帮助学生在一年内全面提升电子设计能力,为竞赛做好充分准备。

weixin_31476015的博客 287

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

83. 删除排序链表中的重复元素 难度简单515收藏分享切换为英文接收动态反馈 存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 提示: 链表中节点数目在范围[0, 300]内 -100 <= Node.val &l...

a707931675的博客 165

ollama服务暴露公网?三步搞定Nginx反向代理配置(避坑指南)

本文详细介绍了如何通过Nginx反向代理安全地将Ollama服务暴露到公网,避免直接修改OLLAMA_HOST带来的安全隐患。文章提供了从SSL证书部署到高级安全加固的全流程实战指南,包括IP白名单、基础认证、速率限制等企业级安全措施,帮助用户实现安全可靠的外部访问。

wood5的博客 178

AUTOSAR BswM配置实战:手把手教你用Vector Davinci Configurator搭建第一个模式管理规则

本文详细介绍了如何使用Vector Davinci Configurator工具配置AUTOSAR BswM模块,实现车身控制ECU的模式管理规则。通过实战案例,从环境准备、核心概念梳理到具体配置步骤,包括ModeRequestPort、ModeCondition、Logical Expression和Rules的构建,帮助工程师快速掌握BswM配置技巧,提升汽车电子软件开发效率。

weixin_28678831的博客 353

LeetCode数据结构_C语言题解系列-链表II

LeetCode数据结构_C语言题解系列-链表II

wzbbbb的博客 211

C++如何实时监测另一个进程是否已经退出?(附源码)

调用WaitForSingleObject实时监测目标进程是否已经退出

dvlinker的技术专栏 8276

(链表专题) 83. 删除排序链表中的重复元素 ——【Leetcode每日一题】

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

weixin_43412762的博客 1036

【Java基础知识 1】Java入门级概述

优快云最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。

学Java,找哪吒 16万+

RK3568 上C图像camera图像采集应用实例(二)

本文探索rk3568上实现C语言的 通过C v4l2 接口 采集图像 ,刷屏控制 drm的显示camera图像中 实现camera preview 预览 的实践和探索。

luoshanxuli2010的专栏 761

LeetCode算法题83:删除排序链表中的重复元素(Remove Duplicates from Sorted List)

删除排序链表中的重复元素 LeetCode中文 LeetCode英文 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入...

Making-It 306

如何使用 Claude Code 搜索 SAP note

当然,Claude Code 自己仍然要有一种合法可用的模型访问方式,例如 Claude 订阅、Anthropic API 或公司配置的模型提供方式,这和 Browser Extension 是两个问题。因为 Claude Code 已经是完整的 MCP Host,而 Microsoft Playwright MCP 又已经明确支持现有 Chrome Session,两者拼起来在技术架构上完全成立。Microsoft Playwright MCP 默认可以创建持久化浏览器 Profile。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 65

【LeetCode: 83. 删除排序链表中的重复元素 + 链表】

【LeetCode: 83. 删除排序链表中的重复元素 + 链表】给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。

Coder_ljw的博客 1177

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

本文详细解析了 LeetCode 82 题「删除排序链表中的重复元素 II」的解法。通过使用哑节点(dummy node)统一处理头节点可能被删除的情况,采用双指针遍历链表,当发现重复元素时内层循环跳过所有重复节点。该算法时间复杂度 O(n),空间复杂度 O(1),高效解决了保留唯一元素的问题,并对比了与「删除重复元素 I」的不同处理逻辑。

mrjieke6的博客 977

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Leetcode:83.删除排序链表中的重复元素

Leetcode:83.删除排序链表中的重复元素 题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/probl...

liamzhao13的博客 212

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Leetcode题解 83.删除排序链表中的重复元素(C++)

题目:     Leetcode题解链接:83.删除排序链表中的重复元素     存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。返回同样按升序排列的结果链表。 示例1: 输入:head = [1,1,2] 输出:[1,2] 示例2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 解题基础:     对于数据结构

TheCleaner7的博客 732

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

截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取码:6666 这题说了链表中的值是按照升序排列的,既然是排过序的,那么相同的节点肯定是挨着的。我们可以使用一个指针cur,每次都要判断是否和他后面的节点值相同,如果相同就把后面的那个节点给删除,这里就以示例2为例来看个视频 视频链接 最后再来看下代码 pu.

数据结构和算法 551

Leetcode 83 删除排序链表中的重复元素 C语言

Leetcode 83 删除排序链表中的重复元素 C语言 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 思路:遍历链表 找到相等就指向下一个 否则继续找 struct ListNode* deleteDuplicates(struct ListNode* head){ if(head == NULL)

Android驱动开发 247

LeetCode题解 => 83.删除排序链表中的重复元素

删除排序链表中的重复元素 一、LeetCode题解 瞧一瞧~ 博健的LeetCode题解:Gitbook版本传送门 博健的LeetCode题解:优快云传送门 有趣的CSS:Gitbook传送门 前端进阶笔记:Gitbook传送门 二、算法题 题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2...

余光的博客 731

leetcode刷题83. 删除排序链表中的重复元素,Easy (Java)

leetcode刷题83. 删除排序链表中的重复元素

Sueko的博客 967

LeetCode83题:删除排序链表中的重复元素

题目: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例1: 输入: 1->1->2 输出: 1->2 示例2: 输入: 1->1->2->3->3 输出: 1->2->3 思路: 我们可以通过将结点的值与它之后的结点进行比较来确定它是否为重复结点。如果它是重复的,我们更改当前结点的 next 指针,以便它跳过下一个结点并直接指向下一个结点之后的结点。 代码: /** * leetcode 83 * @au..

Lin_Willen的博客 226

LeetCode算法题83:删除链表中的重复元素解析

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例1: 输入: 1-&gt;1-&gt;2 输出: 1-&gt;2 示例2: 输入: 1-&gt;1-&gt;2-&gt;3-&gt;3 输出: 1-&gt;2-&gt;3 这个题就是考察对链表的使用,很简单的思路,设定两个指针(也可以只设定一个,两个好理解),一个指向当前链表(当前指针),另一个指向下一个链表(下一个指针),然...

Alex的博客 455

【算法练习】leetcode算法题合集之链表篇

【算法练习】leetcode算法题合集之链表篇

秋装什么的博客 1040

【分类整理】面试最常考的 100 道 LeetCode 算法题

100道面试常考的力扣算法题,经过众多面试者投票选出来的,快来领取!

负雪明烛 3万+
上一篇: 力扣算法题67:二进制求和
下一篇: IDEA下日志的控制台颜色背景配置
Week_2019
博客等级 码龄7年 22粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值