题目链接
链接: 随机链表的复制
题目要求

**简单来说就是复刻出和示例一个一模一样的链表结构 **
解题思路
- 遍历链表 : 把原链表的每个节点的值 复制到要深拷贝链表的每个节点 并把 原链表的节点作为
key要进行深拷贝链表的节点作为valput到map中 - 第二遍遍历,通过操作
map.get(原链表节点)得到val也就是 需要深拷贝链表节点 来完成next和randem指针对应位置的连接
代码实现
java
public Node copyRandomList(Node head) {
Map<Node, Node> map = new HashMap<Node, Node>();
Node cur = head;
//复制 值
while(cur != null){
Node newNode = new Node(cur.val);
map.put(cur, newNode);
cur = cur.next;
}
cur = head;
//复制 next 和 randem 的指向
while(cur != null){
map.get(cur).next = map.get(cur.next);
map.get(cur).random = map.get(cur.random);
cur = cur.next;
}
return map.get(head);
}