news 2026/6/15 9:23:21

day139—链表—删除排序链表中的重复元素(LeetCode-83)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day139—链表—删除排序链表中的重复元素(LeetCode-83)

题目描述

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

示例 1:

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

示例 2:

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

提示:

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

解决方案:

这段代码的核心功能是删除升序单链表中的重复节点(仅保留每个元素的唯一实例,比如原链表 1→1→2→3→3 变为 1→2→3),采用「一次遍历 + 指针跳过重复节点」的方式实现,时间复杂度O(n)、空间复杂度O(1),是该问题的经典最优解法。

核心逻辑

代码利用链表 “升序” 的特性,只需遍历一次即可识别并删除重复节点,无需额外空间:

  1. 边界处理:若链表为空(headnullptr),直接返回nullptr
  2. 遍历去重:用指针cur从链表头节点开始遍历,循环条件为cur->next不为空:
    • 若当前节点值等于下一个节点值(cur->val == cur->next->val),说明存在重复,将cur->next指向cur->next->next,跳过重复节点;
    • 若值不相等,说明无重复,将cur移动到下一个节点继续遍历;
  3. 返回结果:遍历完成后,原链表已完成去重,返回头节点head即可。

总结

  1. 核心思路:依托升序链表的特性,重复节点必相邻,通过 “跳过重复节点” 的指针操作完成去重;
  2. 关键细节:仅当节点值不相等时才移动cur,避免漏删连续重复的节点;
  3. 效率特点:一次遍历完成所有去重操作,时间O(n)、空间O(1),是升序链表去重的最优解法。

函数源码:

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(!head) return nullptr; ListNode* cur=head; while(cur->next){ if(cur->val==cur->next->val){ cur->next=cur->next->next; } else{ cur=cur->next; } } return head; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 10:27:56

SAM3大模型镜像解析|支持英文Prompt的万物分割Web交互实践

SAM3大模型镜像解析&#xff5c;支持英文Prompt的万物分割Web交互实践 1. 技术背景与问题提出 图像分割作为计算机视觉的核心任务之一&#xff0c;长期以来依赖于精确的手动标注或特定的视觉提示&#xff08;如点击点、边界框&#xff09;来完成目标提取。传统方法在面对开放…

作者头像 李华
网站建设 2026/6/15 14:50:04

从‘二零零八’到‘2008’:FST ITN-ZH镜像让中文ITN转换更简单

从‘二零零八’到‘2008’&#xff1a;FST ITN-ZH镜像让中文ITN转换更简单 在语音识别、智能客服、会议纪要自动生成等场景中&#xff0c;一个看似微小却影响深远的问题长期存在&#xff1a;口语中的中文数字和表达如何准确转化为标准化的书面格式&#xff1f; 比如&#xff0…

作者头像 李华
网站建设 2026/6/14 15:58:25

如何用fft npainting lama移除图片物品?详细步骤+代码实例

如何用fft npainting lama移除图片物品&#xff1f;详细步骤代码实例 1. 引言&#xff1a;图像修复技术的应用背景 在数字图像处理领域&#xff0c;图像修复&#xff08;Image Inpainting&#xff09;是一项关键任务&#xff0c;旨在通过算法自动填充图像中被遮挡或需要移除的…

作者头像 李华
网站建设 2026/6/15 14:22:09

4个AI电商模型对比评测:云端快速测试,节省90%成本

4个AI电商模型对比评测&#xff1a;云端快速测试&#xff0c;节省90%成本 作为一名在AI领域摸爬滚打多年的技术老兵&#xff0c;我太理解市场专员的难处了。想向领导展示AI在电商领域的巨大潜力&#xff0c;却被卡在GPU设备采购审批上动弹不得——这简直是每个技术人的噩梦。好…

作者头像 李华
网站建设 2026/6/15 10:28:21

SGLang灰度发布策略:平滑更新部署实战指南

SGLang灰度发布策略&#xff1a;平滑更新部署实战指南 1. 引言 随着大语言模型&#xff08;LLM&#xff09;在各类生产环境中的广泛应用&#xff0c;如何高效、稳定地部署和更新推理服务成为工程团队面临的核心挑战。SGLang作为一款专注于提升LLM推理效率的框架&#xff0c;在…

作者头像 李华
网站建设 2026/6/15 11:19:47

CAM++医疗应用:患者语音档案管理系统搭建案例

CAM医疗应用&#xff1a;患者语音档案管理系统搭建案例 1. 引言 在医疗信息化快速发展的今天&#xff0c;如何高效、安全地管理患者信息成为医疗机构面临的重要课题。传统的文本化电子病历系统虽然普及广泛&#xff0c;但在实际临床场景中仍存在身份核验不精准、数据录入效率…

作者头像 李华