码迷,mamicode.com
首页 > 其他好文 > 详细

复杂链表的复制

时间:2016-06-28 12:55:57      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

题目

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)

解题

HashMap
先next链接
再random链接

/*
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);
    }
}

复杂链表的复制

标签:

原文地址:http://blog.csdn.net/qunxingvip/article/details/51735096

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!