-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcopyListRandomPointer.py
41 lines (32 loc) · 975 Bytes
/
copyListRandomPointer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class Solution:
def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]':
if (head == None):
return None
node = head
while (node != None):
# STEP 1
newnode = Node(node.val)
newnode.next = node.next
node.next = newnode
node = newnode.next
# STEP 2
node = head
while (node != None):
if (node.random == None):
node.next.random = None
else:
node.next.random = node.random.next
node = node.next.next
# STEP 3
node = head
result = head.next
temp = head.next
while (node != None):
node.next = node.next.next
if (temp.next == None):
temp.next = None
else:
temp.next = temp.next.next
node = node.next
temp = temp.next
return result