Вопрос проверяет понимание структуры односвязного графа и умение найти узел без входящих ребер, что является базовым навыком для работы с графами.
Односвязный граф (цепочка) представляет собой последовательность узлов, где каждый узел (кроме последнего) имеет ровно одно исходящее ребро, а каждый узел (кроме первого) имеет ровно одно входящее ребро. Стартовый узел — это узел без входящих ребер. Для его нахождения по множеству ребер необходимо проанализировать входящие степени узлов.
function findStartNode(edges) {
const nodes = new Set();
const hasIncoming = new Set();
for (const [from, to] of edges) {
nodes.add(from);
nodes.add(to);
hasIncoming.add(to);
}
for (const node of nodes) {
if (!hasIncoming.has(node)) {
return node;
}
}
return null; // не найдено
}
// Пример: цепочка A -> B -> C -> D
const edges = [['A', 'B'], ['B', 'C'], ['C', 'D']];
console.log(findStartNode(edges)); // 'A'Этот подход используется в топологической сортировке, анализе зависимостей (например, в системах сборки) и при работе с блокчейн-цепочками. Он позволяет быстро определить начало последовательности, не имея прямого указателя на него.
Вывод: Метод поиска узла с нулевой входящей степенью прост и эффективен для односвязных графов. Его стоит применять, когда нужно восстановить порядок элементов по набору связей, например, при обработке логов или построении последовательностей.
Уровень
Рейтинг:
3
Сложность:
3
Навыки
JavaScript
Networks
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию