博客
关于我
剑指offer删除链表中重复的节点
阅读量:634 次
发布时间:2019-03-14

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

链表是排好序的,且需要删除重复的节点。重复节点指的是连续出现的相同值的节点,例如1,1,2,2,3中的第二个1、第二个2需要被删除。我们需要创建一个新的链表来存储结果,以避免在原链表上进行操作可能带来的复杂性。

步骤如下:

  • 初始化新链表:创建一个新的头节点newHead,并用一个指针tmp来跟踪当前位置。
  • 遍历原链表:从原链表的头节点开始,逐个遍历每个节点。
  • 处理重复节点
    • 如果当前节点的值与下一个节点的值相等,继续遍历,直到找到不相同的节点。
    • 一旦找到不同值的节点,将当前节点连接到tmp后面,并移动指针到下一个节点。
  • 处理非重复节点:如果当前节点的值与下一个节点的值不相等,将当前节点连接到tmp后面,并移动指针到下一个节点。
  • 清除尾部节点:如果最后一个节点是重复节点,设置tmp的下一个节点为null。
  • 代码实现如下:

    public class Solution {    public ListNode deleteDuplication(ListNode pHead) {        if (pHead == null) {            return null;        }        ListNode newHead = new ListNode(-1);        ListNode tmp = newHead;        ListNode cur = pHead;        while (cur != null) {            if (cur.next != null && cur.val == cur.next.val) {                while (cur.next != null && cur.val == cur.next.val) {                    cur = cur.next;                }                cur = cur.next;            } else {                tmp.next = cur;                tmp = tmp.next;                cur = cur.next;            }            tmp.next = null;        }        return newHead.next;    }}

    代码解释

    • 初始化:创建了一个新的链表头newHead,并初始化了tmp指针。
    • 遍历链表:从pHead开始,逐个访问每个节点。
    • 处理重复节点:当发现当前节点的值与下一个节点的值相等时,继续移动cur指针,直到找到不相同的节点。
    • 连接节点:当处理完重复节点后,连接当前节点到tmp后面,并移动指针。
    • 清除尾部节点:最后设置tmp的下一个节点为null,确保尾部节点被删除。

    该方法能够正确处理所有情况,包括链表为空、单个节点以及最后一个节点是重复节点的情况。

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

    你可能感兴趣的文章
    No module named 'crispy_forms'等使用pycharm开发
    查看>>
    No module named 'pandads'
    查看>>
    No module named cv2
    查看>>
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>
    No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
    查看>>
    No new migrations found. Your system is up-to-date.
    查看>>
    No qualifying bean of type XXX found for dependency XXX.
    查看>>
    No qualifying bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>‘ available
    查看>>
    No resource identifier found for attribute 'srcCompat' in package的解决办法
    查看>>
    no session found for current thread
    查看>>
    No static resource favicon.ico.
    查看>>
    no such file or directory AndroidManifest.xml
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>
    no1
    查看>>
    NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
    查看>>
    NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
    查看>>
    NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
    查看>>
    node
    查看>>
    node exporter完整版
    查看>>