- 138. Copy List with Random Point
- 138. Copy List with Random Point
- 138. Copy List with Random Point
- 138. Copy List with Random Point
- 138. Copy List with Random Point
- [刷题防痴呆] 0138 - 复制带随机指针的链表 (Copy
- copy-list-with-random-pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
题目:
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
思路和注意点:
1.答案很多特别屌的解法,学到一个知识点, python里的object是可hash的!
2.然后这道题里, trick part 就是其实第一遍过了整个list,就可以吧所有新的node 生成, 第二次就不用生成新的了。 这两道题类似,可以总结提高。
Python:
# Definition for singly-linked list with a random pointer.
# class RandomListNode(object):
# def __init__(self, x):
# self.label = x
# self.next = None
# self.random = None
class Solution(object):
def copyRandomList(self, head):
"""
:type head: RandomListNode
:rtype: RandomListNode
"""
#seems not hard, try first time, list varible is unhashable,but object is hashable!!!!
dick = {}
m = n = head
while m:
dick[m] = RandomListNode(m.label)
m = m.next
while n:
dick[n].next = dick.get(n.next)
dick[n].random = dick.get(n.random)
n = n.next
return dick.get(head)
网友评论