A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
复制一个有random pointer的Linked List, 边遍历边构建List Node, 但是这里我们需要用到hashmap,这样保证了对于原来list里的每个node,我们只生成了一个与他对应的新node。
注意null check
注意null check
public class Solution { //Time: O(n) public RandomListNode copyRandomList(RandomListNode head) { RandomListNode dummy = new RandomListNode(0); RandomListNode node = dummy; HashMap<RandomListNode, RandomListNode> map = new HashMap<RandomListNode, RandomListNode>(); while (head != null) { if (!map.containsKey(head)) { map.put(head, new RandomListNode(head.label)); } node.next = map.get(head); //null check if (head.random != null) { if (!map.containsKey(head.random)) { map.put(head.random, new RandomListNode(head.random.label)); } node.next.random = map.get(head.random); } head = head.next; node = node.next; } return dummy.next; } }
No comments:
Post a Comment