[LeetCode]138. 复制带随机指针的链表
题解
方法一:hashmap构造旧节点和新节点的映射关系,为新节点next、random指针赋值。
方法二(空间复杂度更优):把新节点连接到对应旧节点后面,为新节点random指针赋值,把新节点拆出来连到新链表。
代码
方法一
class Solution {
public Node copyRandomList(Node head) {
if(head==null){
return null;
}
Node p=head;
Map<Node,Node> map=new HashMap<>();
while(p!=null){
map.put(p,new Node(p.val));
p=p.next;
}
p=head;
while(p!=null){
Node pNew=map.get(p);
if(p.next!=null){
pNew.next=map.get(p.next);
}
if(p.random!=null){
pNew.random=map.get(p.random);
}
p=p.next;
}
return map.get(head);
}
}
posted on 2020-10-27 19:42 coding_gaga 阅读(58) 评论(0) 编辑 收藏 举报