zoukankan      html  css  js  c++  java
  • 【剑指offer】复杂链表的复制

    一、题目:

         输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。

    二、思路:

         1.难点分析:

           首先,不能引用原始节点,所以只能复制值,每次都要创建节点。其次,如果单纯只有next,那么就很好复制了,创节点-链接就可以了,但是有随机下节点的存在,不创建完没办法设置随机下节点,因为未创建完时,前面节点的下随机节点可能还没创建,就没办法链接。最后,难点在于如何把随机下节点链接好,也没办法按值查找,因为值有可能重复。

         2.思路分析:

            参考大神的一个巧妙思路:

           首先把各个节点都复制一遍,并加到原节点的后面;(这样新节点的random节点就是原节点的random节点的next)

           然后把random节点补充上;

           最后把链表拆成两个。

          需要注意的是,下图是两种方法实现最后一步拆分链表,其中第一种方法要注意,到最后一个节点时,原节点是有一个节点的next指向新链表的,要去除,不然将跟原节点有关联不符合要求。

          看了其他大牛的思路和代码,秀得我脑壳疼,仰慕.png

    三、代码:

        

      

     
  • 相关阅读:
    设置允许跨域访问
    设计模式学习笔记(1)——单例模式
    yii2 request文件简介
    YII2 添加全局自定义函数
    第2章 查询基础
    第1章 数据库和SQL
    第0章 绪论
    用户贷款风险预测—特征提取
    用户贷款风险预测—数据探索
    Python 数据分析—画图
  • 原文地址:https://www.cnblogs.com/EstherLjy/p/9324021.html
Copyright © 2011-2022 走看看