59. 螺旋矩阵 II
题目描述
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解题思路
思路:层模拟
类似题目:54. 螺旋矩阵
代码
/**
* @param {number} n
* @return {number[][]}
*/
var generateMatrix = function (n) {
let matrix = new Array(),
colStart = 0,
colEnd = n - 1,
rowStart = 0,
rowEnd = n - 1,
num = 1,
tar = n * n;
for (let i = 0; i < n; i++) matrix[i] = new Array();
while (num <= tar) {
for (let i = colStart; i <= colEnd; i++) matrix[rowStart][i] = num++; // colStart to colEnd.
rowStart++;
for (let i = rowStart; i <= rowEnd; i++) matrix[i][colEnd] = num++; // rowStart to rowEnd.
colEnd--;
for (let i = colEnd; i >= colStart; i--) matrix[rowEnd][i] = num++; // colEnd to colStart.
rowEnd--;
for (let i = rowEnd; i >= rowStart; i--) matrix[i][colStart] = num++; // rowEnd to rowStart.
colStart++;
}
return matrix;
};