-
题目要求:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
-
解题思路:双向指针 首先是将next结点的 对应链表复制 然后放入字典 在找随机点利用字典在赋值 python指向是变量的地址.
-
class RandomListNode: #实际就是复制后的头结点 返回 def __init__(self, x): self.label = x self.next = None self.random = None class Solution: # 返回 RandomListNode def Clone(self,pHead): # write code here if not pHead: return None p = pHead new_h = RandomListNode(p.label) pre_p = new_h random_map = {pHead: new_h} p = p.next while p:#next结点 值得结点都是双指针结点的位置 new_p = RandomListNode(p.label) random_map[p] = new_p pre_p.next = new_p pre_p = pre_p.next p = p.next p = pHead new_p = new_h while p:#随机点 random_p = p.random if random_p: new_p.random = random_map[random_p] p = p.next new_p = new_p.next return new_h
剑指offer-25 复杂链表的复制
最新推荐文章于 2020-07-16 09:46:23 发布