复制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链表的主要内容,如果未能解决你的问题,请参考以下文章

复杂链表的复制

剑指Offer35.复杂链表的复制

[剑指offer] 25. 复杂链表的复制

[leetcode]138. Copy List with Random Pointer复制带有随机指针的链表

138. 复制带随机指针的链表

leetcode 138. 复制带随机指针的链表