zoukankan      html  css  js  c++  java
  • 25.复杂链表的复制(python)

    题目描述

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

    思路就是三步走

    1.在原来的每一个node后面追加一个一模一样的node

    2.把node.random.next   赋值给node.next.random

    3断开形成新链

     1 import copy
     2 class Solution:
     3     # 返回 RandomListNode
     4     def Clone(self, pHead):
     5         # write code here
     6         if pHead == None:
     7             return None
     8         ptmp = pHead
     9         while ptmp :
    10             newtmp = RandomListNode(ptmp.label)
    11             newtmp.next = ptmp.next
    12             ptmp.next=newtmp
    13             ptmp=newtmp.next
    14             if newtmp.next:
    15                 newtmp = newtmp.next.next
    16         ptmp = pHead
    17         while ptmp:
    18             if ptmp.random:
    19                 ptmp.next.random = ptmp.random.next
    20             ptmp=ptmp.next.next
    21         
    22         newHead = pHead.next
    23         ptmp=pHead
    24         newtmp=pHead.next
    25         while ptmp:
    26             ptmp.next=ptmp.next.next
    27             if newtmp.next:
    28                 newtmp.next=newtmp.next.next
    29                 newtmp=newtmp.next
    30             ptmp = ptmp.next
    31         return newHead

    2019-12-15 10:36:22 

  • 相关阅读:
    CF869E The Untended Antiquity 解题报告
    Walk 解题报告
    CF911F Tree Destruction 解题报告
    P4397 [JLOI2014]聪明的燕姿
    洛谷 P2329 [SCOI2005]栅栏 解题报告
    洛谷 P3747 [六省联考2017]相逢是问候 解题报告
    set-erase
    set-empty
    set-empty
    set-end
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/12042144.html
Copyright © 2011-2022 走看看