剑指 Offer 35. 复杂链表的复制

package leetcode;

import java.util.HashMap;

public class offer_35 {
     public Node copyRandomList(Node head) {
         
         //防止出现空链表
         if(head==null) {
             return null;
         }
         //哈希表法
         HashMap<Node, Node> map=new HashMap<Node, Node>();
         Node node=head;
         while(node!=null) {
             //map中存入每个节点及其复制的节点
             map.put(node, new Node(node.val));
             node=node.next;
         }
         node=head;
         Node newHead=map.get(head);
         while(node!=null) {
             //将node.next对应的value与拷贝到当前复制节点的next
             map.get(node).next=map.get(node.next);
            //将node.random对应的value与拷贝到当前复制节点的random
             map.get(node).random=map.get(node.random);
             node=node.next;
         }
         return newHead;
     }
}

 

posted on 2022-03-03 19:52  一仟零一夜丶  阅读(22)  评论(0)    收藏  举报