随机链表的复制
题意:创建一个新链表,这个新链表所有的节点、next链接和random链接都要与原链表完全相同。
核心思路
1,首先把原节点全部复制一遍得到
2.最核心的一个思路,
cur始终指向的原节点,以原节点进行操作
假如节点 1 的 random 指向节点 3,那么就把节点 1 ′的 random 指向节点 3 的下一个节 点 3 ′,这样就完成了对 random 指针的复制
cur.next.random = cur.random.next
1’ 1的random
这样就实现了1的random给到了1'
3.从头遍历,把1',2',3'取出来就完事了
class Solution: def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]': if head is None: return None cur = head while cur: cur.next = Node(cur.val,cur.next) cur = cur.next.next cur = head while cur: if cur.random: cur.next.random = cur.random.next cur = cur.next.next cur = head.next while cur.next: cur.next = cur.next.next cur = cur.next return head.next