Seawolf 发表于 2019-8-5 09:25:07

leetcode 138. Copy List with Random Pointer



/*
// Definition for a Node.
class Node {
    public int val;
    public Node next;
    public Node random;

    public Node() {}

    public Node(int _val,Node _next,Node _random) {
      val = _val;
      next = _next;
      random = _random;
    }
};
*/
class Solution {
   
    public Node copyRandomList(Node head) {
      
      HashMap<Node,Integer> map = new HashMap<Node,Integer>();
      
      ArrayList<Node> lst = new ArrayList<Node>();
      
      Node ptr = head;
      
      int i = 0;
      
      while(ptr != null){
            
            map.put(ptr,i);
            
            lst.add(new Node(ptr.val,ptr.next,ptr.random));
            
            i++;
            
            ptr = ptr.next;
            
      }
      
      lst.add(null);
      
      i = 0;
      
      ptr = head;
      
      while(ptr != null){
            
            lst.get(i).next = lst.get(i+1);
            
            if(ptr.random != null){
               
                int id = map.get(ptr.random);
               
                lst.get(i).random = lst.get(id);
            }
            
            ptr = ptr.next;
            
            i++;
            
      }
   
      
      return lst.get(0);
      
    }
}
页: [1]
查看完整版本: leetcode 138. Copy List with Random Pointer