LeetCode-Copy de lista vinculada compleja (implementación JS)

Descripción del Título

Ideas para resolver problemas

  • Utilice la estructura de datos del mapa para la asignación
  • La clave almacena el puntero al nodo.
  • Value store new Node
  • El primer ciclo para construir la estructura de datos del mapa
  • El segundo ciclo asigna valores al siguiente campo y al campo aleatorio del valor.
  • Recuerde una cosa: el siguiente campo y el campo aleatorio del valor aquí no pueden apuntar al nodo del nodo, pero solo pueden apuntar al nodo del valor en la estructura de datos del mapa

Código de implementación

var copyRandomList = function(head) {
    
    

    // 首先创建一个Map,键用来存储head指针域,值用来存储复制的节点
    let node = head;
    const m = new Map();

    // 遍历现有链表
    while (node) {
    
    
        m.set(node,new Node(node.val));
        node = node.next;
    }
    // 到这里,链表的键已经存放的是指针,值存放的是next域和random域为空,值为指针所指的val
    // 让node重新指向head
    node = head;
    // 第二次遍历,给Map数据结构中的值,添加上next域和random域
    while (node) {
    
    
        m.get(node).next = node.next ? m.get(node.next):null;
        m.get(node).random = node.random ? m.get(node.random):null;
        node = node.next;
    }
    node = head;
    return m.get(node);

};

Supongo que te gusta

Origin blog.csdn.net/sinat_41696687/article/details/115224943
Recomendado
Clasificación