(Clone) Copy List with Random Pointer
29 Nov 2020 | algorithm programming leetcodehttps://leetcode.com/problems/copy-list-with-random-pointer/
임의의 리스트를 제공해 주고, 이것을 Deep Copy 하는 문제이다.
리스트를 순회하며 새로운 노드의 주소값을 미리 저장해 놓고
다시 그 리스트를 순회하며 미리 맵에 저장된 새로운 노드의 주소를 next와 random에 넣어주면 된다.
class Solution {
public Node copyRandomList(Node head) {
Map<Node, Node> map = new HashMap<>();
Node temp = head;
while (temp != null) {
Node newNode = new Node(temp.val);
map.put(temp, newNode);
temp = temp.next;
}
Node temp2 = head;
Node result = map.get(temp2);
while (temp2 != null) {
Node newNode = map.get(temp2);
newNode.next = map.get(temp2.next);
newNode.random = map.get(temp2.random);
temp2 = temp2.next;
}
return result;
}
}