Сложность: medium
Дан двумерный целочисленный массив nums, верните все элементы nums в диагональном порядке.
Пример:
Input: nums = [[1,2,3,4,5],[6,7],[8],[9,10,11],[12,13,14,15,16]]
Output: [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]
👨💻 Алгоритм:
1⃣Инициализируйте очередь с (0, 0) и список ответов ans.
2⃣Пока очередь не пуста:
Извлеките (row, col) из очереди.
Добавьте nums[row][col] в ans.
Если col == 0 и row + 1 в пределах массива, добавьте (row + 1, col) в очередь.
Если col + 1 в пределах текущей строки, добавьте (row, col + 1) в очередь.
3⃣Верните ans.
😎 Решение:
class Solution {
findDiagonalOrder(nums) {
const queue = [[0, 0]];
const ans = [];
while (queue.length > 0) {
const [row, col] = queue.shift();
ans.push(nums[row][col]);
if (col === 0 && row + 1 < nums.length) {
queue.push([row + 1, col]);
}
if (col + 1 < nums[row].length) {
queue.push([row, col + 1]);
}
}
return ans;
}
}Ставь 👍 и забирай 📚 Базу знаний