当前位置: 首页 > news >正文

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; } };
http://www.jsqmd.com/news/260006/

相关文章:

  • 语音识别延迟高?CAM++推理速度优化实战技巧
  • I2C总线在工业控制中的应用:系统学习指南
  • 没GPU怎么跑Python3.9?云端1小时1块,5分钟部署
  • Qwen2.5-7B-Instruct异常处理:鲁棒性增强技术详解
  • Hunyuan翻译系统稳定性测试:长时间运行压力部署教程
  • Z-Image-Turbo横版竖版怎么选?16:9与9:16尺寸应用实战
  • Stable Diffusion+ASR双模型对比:云端GPU3小时完成,成本降70%
  • 通义千问2.5 vs 文心一言:指令遵循能力实战评测
  • 5个开源大模型镜像推荐:DeepSeek-R1免配置一键部署实战测评
  • screen命令开机自启:服务化部署配置教程
  • SGLang-v0.5.6性能优化:减少序列化开销的技巧
  • opencode错误修复建议实战:真实Bug案例处理流程
  • Claude Skills 的本质
  • 小白也能懂的中文NLP:RexUniNLU快速上手
  • AI写作大师Qwen3-4B性能测试:CPU与GPU环境对比
  • win10下 QUME模拟 代网络 的ARM64架构虚拟机
  • HY-MT1.8B部署卡算力?在线策略蒸馏技术解析与优化实践
  • AI读脸术实战案例:展会访客数据分析系统搭建
  • Z-Image-Turbo_UI界面UI设计师:灵感图即时生成工作台
  • Swift-All参数详解:Q-Galore优化器使用场景分析
  • 开源AI模型部署新趋势:Qwen3-4B-Instruct+自动扩缩容GPU实战
  • Qwen3-4B-Instruct-2507实战指南:UI-TARS-desktop开发技巧
  • 开发板启动时间优化
  • Live Avatar Gradio界面无法访问?端口冲突解决方法
  • verl多智能体协同:群体行为建模训练案例
  • SGLang-v0.5.6问题排查:Connection Refused错误解决方法
  • BGE-M3优化实战:提升语义匹配速度300%
  • 通过curl测试Qwen3-0.6B API,快速验证服务可用性
  • Qwen2.5-0.5B-Instruct环境配置:CUDA与驱动版本兼容性
  • 深度剖析ModbusRTU请求与响应交互过程