微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

剑指 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;
     }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐