Фигура клон Java LeetCode реализация 133

Клонирование 133. На фиг.

Дай вам опорный узел подключен неориентированный рисунок, глубокая копия вы вернетесь к этой цифре (клон).

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

class Node {
    public int val;
    public List<Node> neighbors;
}
 

Формат теста:

Для простоты, значение каждого узла и его индекс одинаково. Например, значение первого узла, второй узел 2, и так далее. Фигура с использованием списка смежности, представленный в тесте.

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

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

Пример 1:
Here Вставка рисунка Описание

Входной сигнал: adjList = [[2,4], [1,3], [2,4], [1,3]]
Выход: [[2,4], [1,3], [2,4], [1,3]]
объяснение:
фиги есть четыре узла.
Узел 1 представляет собой значение 1, она имеет два соседей: узлы 2 и 4.
Значение узла-равно 2, он имеет два соседей: узлы 1 и 3.
3 является значением узла 3, он имеет два соседей: узлы 2 и 4.
4 является значением узла 4, он имеет два соседей: узлы 1 и 3.
Пример 2:

Here Вставка рисунка Описание

Входной сигнал: adjList = [[]]
Выход: [[]]
Пояснение: ввод содержит пустой список. Эта схема является лишь значение только одного узла, он не имеет каких - либо соседей.
Пример 3:

Входной сигнал: adjList = []
Выход: []
Пояснение: Эта цифра пуста, она не содержит какой - либо узел.
Пример 4:

Here Вставка рисунка Описание

Входной сигнал: adjList = [[2], [1]]
Выход: [[2], [1]]

Советы:

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

PS:
Клонирование на фиг.

/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> neighbors;
    
    public Node() {
        val = 0;
        neighbors = new ArrayList<Node>();
    }
    
    public Node(int _val) {
        val = _val;
        neighbors = new ArrayList<Node>();
    }
    
    public Node(int _val, ArrayList<Node> _neighbors) {
        val = _val;
        neighbors = _neighbors;
    }
}
*/
class Solution {
      Map<Node, Node> map = new HashMap<>();
    public Node cloneGraph(Node node) {
        if(node == null) return null;
        Node copy = new Node(node.val, new ArrayList<>());
        map.put(node, copy);
        for(Node neighbor : node.neighbors){
            if(map.containsKey(neighbor)){
                copy.neighbors.add(map.get(neighbor));
            }else{
                copy.neighbors.add(cloneGraph(neighbor));
            }
        }
        return copy;
    }
}
Освобожденные 1254 оригинальные статьи · вона похвала 10000 + · просмотров 820 000 +

рекомендация

отblog.csdn.net/a1439775520/article/details/104425237
рекомендация