LeetCode:复制带随机指针的链表

题目链接

思路

  • 创建一个HashMap
  • 根据原链表,创建对应的新节点,将原链表的节点当作 key,根据原链表复制的新节点为 value
  • 根据key的指向,创建value的指向

代码

class Solution {
    public Node copyRandomList(Node head) {
        if(head==null){
            return null;
        }
        Map map=new HashMap<>();
        //首先根据原链表创建出正常的新节点,放在Map中
        for(Node cur=head;cur!=null;cur=cur.next){
            Node newNode=new Node(cur.val);
            map.put(cur,newNode);
        }
        //然后看原链表的指向关系,让新链表的指向也复制过来
        for(Node key:map.keySet()){
            map.get(key).next=map.get(key.next);
            map.get(key).random=map.get(key.random);
        }
        return map.get(head);
    }
}

 

你可能感兴趣的:(题目总结,链表,java,hashmap)