Сложность: easy
Вам даны четыре целых числа row, cols, rCenter и cCenter. Имеется матрица rows x cols, и вы находитесь на ячейке с координатами (rCenter, cCenter). Верните координаты всех ячеек в матрице, отсортированные по их расстоянию от (rCenter, cCenter) от наименьшего расстояния до наибольшего. Вы можете вернуть ответ в любом порядке, удовлетворяющем этому условию. Расстояние между двумя ячейками (r1, c1) и (r2, c2) равно |r1 - r2| + |c1 - c2|.
Пример:
Input: rows = 1, cols = 2, rCenter = 0, cCenter = 0
Output: [[0,0],[0,1]]
👨💻 Алгоритм:
1⃣Инициализация и вычисление расстояний:
Создайте список для хранения всех координат ячеек в матрице.
Вычислите расстояние Манхэттена от каждой ячейки до центра и добавьте пару (расстояние, координаты) в список.
2⃣Сортировка списка:
Отсортируйте список по расстоянию в порядке возрастания.
3⃣Извлечение координат:
Извлеките координаты из отсортированного списка и верните их.
😎 Решение:
def allCellsDistOrder(rows, cols, rCenter, cCenter):
cells = []
for r in range(rows):
for c in range(cols):
distance = abs(r - rCenter) + abs(c - cCenter)
cells.append((distance, r, c))
cells.sort()
return [(r, c) for _, r, c in cells]
Ставь 👍 и забирай 📚 Базу знаний