Обход спирали матрицы, начиная с заданных координат

Опубликовано: 21 Сентября, 2022

Учитывая порядок матрицы N и M и исходное местоположение ( X, Y ), задача состоит в том, чтобы найти все координаты матрицы по порядку при посещении по спирали по часовой стрелке (т.е. Восток-> Юг-> Запад- > Север). Всякий раз, когда вы выходите за пределы матрицы, продолжайте прогулку за ее пределами, чтобы вернуться в матрицу позже.

Примеры:

Input: N = 1, M = 4, X = 0, Y = 0
Output: {{0, 0}, {0, 1}, {0, 2}, {0, 3}}
Explanation:

Input: N = 5, M = 6, X = 1, Y = 4
Output: {{1, 4}, {1, 5}, {2, 5}, {2, 4}, {2, 3}, {1, 3}, {0, 3}, {0, 4}, {0, 5}, {3, 5}, {3, 4}, {3, 3}, {3, 2}, {2, 2}, {1, 2}, {0, 2}, {4, 5}, {4, 4}, {4, 3}, {4, 2}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}
Explanation:

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

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N 2 )
Вспомогательное пространство: O(1)

РЕКОМЕНДУЕМЫЕ СТАТЬИ