[剑指offer]15.复杂链表的复制

题目链接:戳这里
题目描述:
[剑指offer]15.复杂链表的复制_第1张图片
解题思路:用HashMap来存原节点和复制的节点,再将复制的节点的next和random组织起来。
java代码:

/*
// Definition for a Node.
class Node {
    int val;
    Node next;
    Node random;

    public Node(int val) {
        this.val = val;
        this.next = null;
        this.random = null;
    }
}
*/
  class Solution {
    public Node copyRandomList(Node head) {
        Map save=new HashMap<>();
        Node h=head;
        while (h!=null){
            save.put(h,new Node(h.val));
            h=h.next;
        }
        h=head;
        while (h!=null){
            save.get(h).next=save.get(h.next);
            save.get(h).random=save.get(h.random);
            h=h.next;
        }
        return save.get(head);
    }
  }

你可能感兴趣的:(java,leetcode,hashmap,链表)