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

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

    1.三步法

    第一步:在复杂链表的原始节点N后面创建对应节点N'

    第二步:设置复制节点的random

    第三步:把链表拆成两个链表

     1 class Solution:
     2     # 返回 RandomListNode
     3     def Clone(self, pHead):
     4         # write code here
     5         if not pHead:
     6             return pHead
     7         #1.复制对应节点
     8         pnode=pHead
     9         while pnode:
    10             head2 = RandomListNode(pnode.label)
    11             head2.next=pnode.next
    12             pnode.next=head2
    13             pnode=head2.next
    14         pnode2=pHead
    15         #2.设置节点的random值,下面两种写法都可
    16         
    17         # while pnode2 and pnode2.next:
    18         #     temp=pnode2.random
    19         #     if temp:
    20         #         pnode2.next.random=temp.next
    21         #     pnode2=pnode2.next.next
    22         #写法二:
    23         while pnode2:
    24             temp=pnode2.next
    25             if pnode2.random:
    26                 temp.random=pnode2.random.next
    27             pnode2=temp.next
    28         #3.拆分链表
    29         pnode4=pHead
    30         copyhead=pHead.next
    31         pnode3=copyhead
    32         while pnode3 :
    33             pnode4.next=pnode3.next
    34             pnode4=pnode4.next
    35             if pnode4:
    36                 pnode3.next=pnode4.next
    37             else:
    38                 pnode3.next=None
    39             pnode3=pnode3.next
    40 
    41         return  copyhead

    小结:1.后面用到该节点的next时,一定要先判断节点是否为空

    2.一个链表拆为两个节点是,注意两个链表后面都要置空。

  • 相关阅读:
    设计模式之代理模式
    Java8内存模型—永久代(PermGen)和元空间(Metaspace)
    使用jconsole分析内存情况-JVM
    JVM(Java虚拟机)优化大全和案例实战
    JVM调优总结 -Xms -Xmx -Xmn -Xss
    聊聊jvm的PermGen与Metaspace
    Jconsole
    【Java VisualVM】使用 VisualVM 进行性能分析及调优
    JAVA基础(10)——IO、NIO
    JAVA基础(9)——容器(3)——并发容器
  • 原文地址:https://www.cnblogs.com/wanrongshu/p/12752408.html
Copyright © 2011-2022 走看看