Back to all solutions
#1424 - Diagonal Traverse II
Problem Description
Given a 2D integer array nums, return all elements of nums in diagonal order as shown in the below images.
Solution
/**
* @param {number[][]} nums
* @return {number[]}
*/
var findDiagonalOrder = function(nums) {
const diagonalGroups = [];
for (let row = 0; row < nums.length; row++) {
for (let col = 0; col < nums[row].length; col++) {
const sum = row + col;
if (!diagonalGroups[sum]) {
diagonalGroups[sum] = [];
}
diagonalGroups[sum].push(nums[row][col]);
}
}
const result = [];
for (const group of diagonalGroups) {
if (group) {
result.push(...group.reverse());
}
}
return result;
};