博客
关于我
154-删除链表中重复元素(只保留出现一次的元素)
阅读量:521 次
发布时间:2019-03-08

本文共 528 字,大约阅读时间需要 1 分钟。

要删除排序链表中重复数字的节点,可以使用两种方法:

方法一:哑节点法

  • 引入哑节点:创建一个虚拟节点 node,将其 next 指向原链表的头结点。这样处理起来对头节点的特殊情况更友好。

  • 定义指针:用 p 指针指向链表的头节点,用 q 指向虚拟节点 node

  • 遍历链表

    • pp.nextnull 时,终止循环。
    • 检查 pp.next 的值是否不同。如果不同,q 移动到 p,然后 p 移动到下一个节点。
    • 如果值相同,p 继续移动,直到找到最后一个值相同的节点。然后 q 的下一个指向 p 的下一个节点,p 跳到下一个节点。
  • 返回结果:返回虚拟节点 node 的下一个节点,即为处理后的链表头。

  • 这种方法通过一次遍历处理所有重复节点,适合处理连续重复的情况。

    方法二:递归法

  • 递归终止条件:如果当前节点或其下一个为 null,直接返回当前节点。

  • 递归判断

    • 如果当前节点和下一个节点的值不同,直接调用递归处理下一个节点。
    • 如果值相同,跳过所有连续相同的节点,调用递归处理剩余的节点。
  • 递归方法适合处理非连续重复节点,但在遇到多个连续重复时,需要多次跳过才能达到终止,增加了递归深度。

    两种方法各有优劣,选择哪种取决于具体需求和优化目标。

    转载地址:http://fiyiz.baihongyu.com/

    你可能感兴趣的文章
    网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
    查看>>
    上周热点回顾(6.9-6.15)
    查看>>
    上周热点回顾(1.23-1.29)
    查看>>
    Python 简明教程 --- 20,Python 类中的属性与方法
    查看>>
    稀疏数组
    查看>>
    83. Remove Duplicates from Sorted List
    查看>>
    痞子衡嵌入式:串口调试工具pzh-com诞生记(2)- 界面构建(wxFormBuilder3.8.0)
    查看>>
    Nmap扫描工具介绍
    查看>>
    Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)
    查看>>
    玩玩小爬虫——试搭小架构
    查看>>
    Python大神编程常用4大工具,你用过几个?
    查看>>
    linux kernel version magic 不一致导致的模块 加载 (insmod) 不上
    查看>>
    centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
    查看>>
    MySQL 1064 You have an error in your SQL syntax 错误解决办法
    查看>>
    【Flink】Flink 底层RPC框架分析
    查看>>
    MySQL错误日志(Error Log)
    查看>>
    oracle使用DBMS_RANDOM包生成随机数据
    查看>>
    C++高精度模板
    查看>>
    解决:angularjs radio默认选中失效问题
    查看>>
    windows环境下安装zookeeper(仅本地使用)
    查看>>