Назад к вопросам
Middle
1
Как обойти многомерный массив с неизвестной вложенностью без рекурсии, используя стек?
Компании, где спрашивали
UserGate
Ответ от нейросети
sobes.tech AI
Чтобы обойти многомерный массив с неизвестной глубиной вложенности без рекурсии, можно использовать стек для хранения текущих элементов и их индексов. Идея в том, чтобы итерироваться по элементам, если элемент — массив, помещать его в стек для дальнейшей обработки, если элемент — значение — обрабатывать его.
Пример на JavaScript:
function flattenArray(arr) {
const stack = [...arr]; // копируем исходный массив в стек
const result = [];
while (stack.length) {
const next = stack.pop();
if (Array.isArray(next)) {
// если элемент массив, кладём его элементы в стек
stack.push(...next);
} else {
// если элемент значение, добавляем в результат
result.push(next);
}
}
// так как мы используем стек (LIFO), порядок элементов будет обратным
return result.reverse();
}
const nested = [1, [2, [3, 4], 5], 6];
console.log(flattenArray(nested)); // [1, 2, 3, 4, 5, 6]
Таким образом, стек позволяет обойти структуру без рекурсии, последовательно обрабатывая вложенные массивы.