剑指 Offer 35. 复杂链表的复制python

题目描述:

剑指 Offer 35. 复杂链表的复制python_第1张图片

剑指 Offer 35. 复杂链表的复制python_第2张图片 

 题解:参考剑指 Offer 35. 复杂链表的复制_大白能的博客-CSDN博客

1.先为链表中每个节点创建一个复制节点,此时只复制节点值。

2.创建random关系,指向原random节点之后的复制节点。

3.拆分完成节点复制后的链表。

class Solution(object):
    def copyRandomList(self, head):
        if head==None:
            return None
        cur = head
        while cur:
            copynode = Node(cur.val)
            copynode.next = cur.next
            cur.next = copynode
            cur = copynode.next

        cur = head
        while cur:
            if cur.random!=None:
                cur.next.random = cur.random.next
            cur = cur.next.next
        cur = head
        copyhead = head.next
        copycur = copyhead
        while cur:
            cur.next = cur.next.next
            cur = cur.next
            if copycur.next:
                copycur.next = copycur.next.next
                copycur = copycur.next
        return copyhead

剑指 Offer 35. 复杂链表的复制python_第3张图片

 

你可能感兴趣的:(剑指offer,leetcode链表,leetcode,python,算法)