138. Copy List with Random Pointer

来源:互联网 发布:linux 剩余空间 编辑:程序博客网 时间:2024/06/07 02:40
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节点,第二步链接nextrandom,通过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);    }}
原创粉丝点击