Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3
Output:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
Straight-forward.
/**
* @param {number} n
* @return {number[][]}
*/
let generateMatrix = function (n) {
const matrix = [...new Array(n)].map(() => []);
const halfN = ((n + 1) / 2) | 0;
let count = 1;
for (let start = 0; start < halfN; start++) {
const end = n - start - 1;
for (let col = start; col <= end; col++) {
matrix[start][col] = count++;
}
for (let row = start + 1; row <= end; row++) {
matrix[row][end] = count++;
}
for (let col = end - 1; col >= start; col--) {
matrix[end][col] = count++;
}
for (let row = end - 1; row > start; row--) {
matrix[row][start] = count++;
}
}
return matrix;
};
☆: .。. o(≧▽≦)o .。.:☆☆: .。. o(≧▽≦)o .。.:☆☆: .。. o(≧▽≦)o .。.:☆
☆: .。. o(≧▽≦)o .。.:☆☆: .。. o(≧▽≦)o .。.:☆