复杂链表的复制,使用Map结构
原链表存在key中, 新链表存在value中。
将key链表的指针引用复制到 value链表上,返回value链表即可。
import java.util.HashMap;
public class Solution {
public RandomListNode Clone(RandomListNode pHead) {
if(pHead == null){
return pHead;
}
RandomListNode p1 = pHead;
RandomListNode p2 = pHead;
HashMap<RandomListNode,RandomListNode> map = new HashMap<>();
while(p1!=null){
map.put(p1,new RandomListNode(p1.label));
p1 = p1.next;
}
while(p2 !=null){
if(p2.next != null){
map.get(p2).next = map.get(p2.next);
}else map.get(p2).next = null;
map.get(p2).random = map.get(p2.random);
p2 = p2.next;
}
return map.get(pHead);
}
}
京公网安备 11010502036488号