Придумайте следующий вопрос на собеседовании, связанный с матрицей

Недавно у меня была возможность пройти имитационное техническое собеседование по мере того, как я продвигаюсь к поиску работы. Для последней задачи мне дали матричную задачу. Матричные задачи - популярные вопросы технических собеседований, и существует множество, в которых используются матричные структуры данных. Эта конкретная задача хороша для отработки методов массивов!

Постановка задачи

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

Функция должна работать независимо от последовательного порядка чисел в матрице.

Разрушая это

Чтобы распутать каждое число, функции потребуется несколько действий, которые нужно будет обойти по спирали: условный оператор (чтобы знать, когда остановиться), вывод вверху массив, правая сторона каждого массива (последний номер каждого массива), нижний массив в обратном порядке, левый сторона массива (первое число в каждом массиве), а затем оставшиеся числа.

Условие выхода остановит функцию, как только она распечатает все числа в матрице.

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

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

Чтобы получить нижнюю строку в обратном порядке, мы по-прежнему используем метод pop (), но мы связываем метод reverse () с * обратным * порядком, в котором числа были помещены в массив.

Предпоследняя часть - получить числа в левой части матрицы, которая является первым числом в каждой строке снизу вверх.

Используются те же методы, что и на предыдущих шагах, но они устроены по-другому для получения необходимого результата. Матрица отображается таким образом, что каждая строка вызывает метод shift (), а затем переходит в обратном порядке строк, чтобы получить элемент в строке выше.

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

Вот и все! Вот функция в целом:

Заключение

Это лишь один из многих матричных проблемных вопросов, которые задают во время технических собеседований. Вы можете найти еще много здесь.

Наслаждаться!