Сложность: 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⃣Извлечение координат:
Извлеките координаты из отсортированного списка и верните их.
😎 Решение:
var allCellsDistOrder = function(rows, cols, rCenter, cCenter) {
const cells = [];
for (let r = 0; r < rows; r++) {
for (let c = 0; c < cols; c++) {
const distance = Math.abs(r - rCenter) + Math.abs(c - cCenter);
cells.push([distance, r, c]);
}
}
cells.sort((a, b) => a[0] - b[0]);
return cells.map(cell => [cell[1], cell[2]]);
};Ставь 👍 и забирай 📚 Базу знаний