複雜連結串列的復刻

qq_358875發表於2020-10-11

複雜連結串列的復刻

請實現一個函式可以複製一個複雜連結串列。

在複雜連結串列中,每個結點除了有一個指標指向下一個結點外,還有一個額外的指標指向連結串列中的任意結點或者null。

注意:

函式結束後原連結串列要與輸入時保持一致。

map

時間複雜度O(n)

class Solution {
    public ListNode copyRandomList(ListNode head) {
        if(head == null){
            return null;
        }
        Map<ListNode,ListNode> copy = new HashMap<>();
        ListNode node = head;
        while(node != null){
            ListNode CloneNode = new ListNode(node.val);
            copy.put(node,CloneNode);
            node = node.next;
        }
        node = head;
        ListNode CloneHead = copy.get(node);
        ListNode CloneNode = CloneHead;
        while(node != null){
            CloneNode.next = copy.get(node.next);
            if(node.random != null){
                CloneNode.random = copy.get(node.random);
            }
            CloneNode = CloneNode.next;
            node = node.next;
        }
        return CloneHead;

    }
}

相關文章