public RandomListNode copyRandomList(RandomListNode head) {
if (head == null) {
return null;
}
Map<RandomListNode, RandomListNode> map = new HashMap<>();
RandomListNode copyNode = new RandomListNode(head.label);
map.put(head, copyNode);
RandomListNode node = head.next;
RandomListNode prevCopyNode = copyNode;
while (node != null) {
RandomListNode nodeCopy = new RandomListNode(node.label);
prevCopyNode.next = nodeCopy;
map.put(node, nodeCopy);
node = node.next;
prevCopyNode = nodeCopy;
}
node = head;
while (node != null) {
RandomListNode randomNode = node.random;
RandomListNode nodeCopy = map.get(node);
RandomListNode copyRandomNode = map.get(randomNode);
nodeCopy.random = copyRandomNode;
node = node.next;
}
return copyNode;
}
Copy List with Random Pointer
最新推荐文章于 2024-08-13 15:34:52 发布