Open liuguanyu opened 4 years ago
const generateMatrix = n => {
let matrix = new Array(n).fill(0).map(el => new Array(n).fill(0))
let _generateMatrix = (n, x=0, y=0, start=1) => {
if (n <= 0){
return
}
if (n == 1){
matrix[x][y] = start
}
// 上
for (let i = x; i < x + n - 1; ++i){
matrix[y][i] = start++
}
// 右
for (let j = y; j < y + n-1; ++j){
matrix[j][x+n-1] = start++
}
// 下
for (i = x+n-1; i > x; --i) {
matrix[y+n-1][i] = start++
}
// 左
for (j = y+n-1; j > y; --j) {
matrix[j][x] = start++
}
// 每走一圈,内圈数字即总行列数减2,数字为从外圈的结束数字的下一个开始
return _generateMatrix(n-2, x+1, y+1, start)
}
_generateMatrix(n)
return matrix
};
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
https://leetcode-cn.com/problems/spiral-matrix-ii/description/