Java Solution

  • 0

    // Actual clone method which returns head
    // reference of cloned linked list.
    public LinkedList clone()
    // Initialize two references, one with original
    // list's head.
    Node origCurr = this.head, cloneCurr = null;

        // Hash map which contains node to node mapping of
        // original and clone linked list.
        Map<Node, Node> map = new HashMap<Node, Node>();
        // Traverse the original list and make a copy of that
        // in the clone linked list.
        while (origCurr != null)
            cloneCurr = new Node(;
            map.put(origCurr, cloneCurr);
            origCurr =;
        // Adjusting the original list reference again.
        origCurr = this.head;
        // Traversal of original list again to adjust the next
        // and random references of clone list using hash map.
        while (origCurr != null)
            cloneCurr = map.get(origCurr);
   = map.get(;
            cloneCurr.random = map.get(origCurr.random);
            origCurr =;
        //return the head reference of the clone list.
        return new LinkedList(map.get(this.head));

Log in to reply

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.