复杂链表的复制
发布时间:2020-12-13 21:09:35 所属栏目:PHP教程 来源:网络整理
导读:题目 输入1个复杂链表(每一个节点中有节点值,和两个指针,1个指向下1个节点,另外一个特殊指针指向任意1个节点) 解题 HashMap 先next链接 再random链接 /*public class RandomListNode { int label; RandomListNode next = null; RandomListNode random =
题目输入1个复杂链表(每一个节点中有节点值,和两个指针,1个指向下1个节点,另外一个特殊指针指向任意1个节点) 解题HashMap /*
public class RandomListNode {
int label;
RandomListNode next = null;
RandomListNode random = null;
RandomListNode(int label) {
this.label = label;
}
}
*/
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Solution {
public RandomListNode Clone(RandomListNode pHead)
{
HashMap<RandomListNode,RandomListNode> map = new HashMap<RandomListNode,RandomListNode>();
RandomListNode p = pHead;
RandomListNode q = new RandomListNode(-1);
// next 链接
while(p!=null){
RandomListNode t = new RandomListNode(p.label);
map.put(p,t);
p = p.next;
q.next = t;
q = t;
}
Set<Entry<RandomListNode,RandomListNode>> set = map.entrySet();
// random 链接
for(Entry<RandomListNode,RandomListNode> s:set){
Entry<RandomListNode,RandomListNode> next = s;
next.getValue().random = map.get(next.getKey().random);
}
return map.get(pHead);
}
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |