复制Random链表
Posted bowenqianngzhibushiwo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复制Random链表相关的知识,希望对你有一定的参考价值。
1 空间复杂度O(M)
public static Node copy(Node node){
if(node==null||node.next==null)
return node;
Node cu=node;
HashMap<Node ,Node> map=new HashMap<>();
while cu!=null){
map.put( cu,new Node( cu.val));
cur=xur.next;}
cur=node;
while( cu!=null){
map.get( cu).next=map.get( cu.next);
map.get( cu).random=map.get( cu.random);
cur=cur.next;
}
return map.get(node);
}
空间复杂度O(1)
public static Node copy(Node node){
if(node==null||node.next==null)
return node;
Node cu=node;
Node next=null;
//复制链表
while(cu!=null){
next=cur.next;
cur.next=new Node(cur.val);
cur.next.next=next;
cur=next;
}
cur=node;
Node cop=null;
while(cop!=null){
next=cur.next.next;
cop=cur.next;
cop.random=cur.random==null?null:cur.random.next;
cur=next;
}
cur=node;
Node ret=node.next;
while(cop!=null){
next=cur.next.next;
cop=cur.next;
cur.next=next;
cop.next=cur.next==null?null:cur.next.next;
cur=next;
}
return ret;
}
以上是关于复制Random链表的主要内容,如果未能解决你的问题,请参考以下文章