Рубрики
Без рубрики

LeetCode 133. График клонов (решение JavaScript)

Описание: Учитывая ссылку узла в подключенном неизорированном графике. Вернуть глубокий … Tagged с алгоритмами JavaScript.

Описание:

Учитывая ссылку на узел в подключенном неизорированном графике.

Вернуть глубокую копию (клон) графика.

Каждый узел в графике содержит значение (int) и список (список [узел]) его соседей.

класс Node {public int val; общественный список соседей; }

Формат тестового случая:

Для простоты значение каждого узла совпадает с индексом узла (1-индексированное). Например, первый узел с Val, второй узел с Val и так далее. График представлен в тестовом примере с использованием списка смежности.

Список смежности представляет собой набор неупорядоченных списков, используемых для представления конечного графика. Каждый список описывает набор соседей узла на графике.

Данный узел всегда будет первым узлом. Вы должны вернуть копию данного узла в качестве ссылки на клонированный график.

Решение:

Сложность времени: O (n) Сложность пространства: O (n)

// DFS approach
var cloneGraph = function(node) {
    // Nodes we have already copied
    const visited = {};

    // DFS function to copy graph
    const dfs = (node) => {
        if (!node) return node;
        // If we have seen this node before, return it
        if (visited[node.val]!=null) return visited[node.val];

        // Create base for copied node
        const root = new Node(node.val);
        // Add this copied node to group of nodes we hav copied
        visited[node.val] = root;

        // Add copied neighbors to the current copied node
        node.neighbors.forEach(n => root.neighbors.push(dfs(n)))
        return root;
    }

    // Return new copied graph
    return dfs(node);
};

Оригинал: “https://dev.to/cod3pineapple/leetcode-133-clone-graph-javascript-solution-4plk”