package leecode; import java.util.HashMap; import java.util.Map; /** * Created by root on 17-6-15. */ //Definition for singly-linked list with a random pointer. class RandomListNode { int label; RandomListNode next, random; RandomListNode(int x) { this.label = x; } }; public class CopyListRandomPoint { /* 这个题的关键在于如何处理random部分,复制的时候避免重复,用hashmap存储节点关系。 第一步先new出所有的next节点,第二步链接next和random,通过hashmap查找,避免重复 */ public RandomListNode copyRandomList(RandomListNode head) { if(head==null)return head; Map<RandomListNode,RandomListNode> hashMap=new HashMap<RandomListNode,RandomListNode>(); RandomListNode node=head; while(node!=null){ hashMap.put(node,new RandomListNode(node.label)); node=node.next; } node=head; while(node!=null){ hashMap.get(node).next=hashMap.get(node.next); hashMap.get(node).random=hashMap.get(node.random); node=node.next; } return hashMap.get(head); } }
07-23
07-23
07-23
08-05