- 要特别注意链表的连接,也就是各种next的顺序,否则会造成崩溃
- 分三步进行:复制的链表clone每一个node接到dummy的相应node后面;clone的random和原node的random指向一样;把链表拆开
class Solution: # 返回 RandomListNode def Clone(self, pHead): # write code here if not pHead: return None #step1 N' to N next dummy = pHead while dummy: clone = RandomListNode(dummy.label) clone.next = dummy.next dummy.next = clone dummy = dummy.next.next #step2, random' to random' dummy = pHead while dummy: clone = dummy.next if dummy.random: clone.random = dummy.random.next dummy = dummy.next.next #step3 split linked list dummy = pHead copyHead = pHead.next while dummy: copyNode = dummy.next dummynext = copyNode.next dummy.next = dummynext #之前没有加这句,链表断掉 if dummynext: copyNode.next = dummynext.next else: copyNode.next = None dummy = dummynext return copyHead