蛇形数字宫格的实现js
蛇形数字宫格的实现(JavaScript)
蛇形数字宫格是一种按照特定顺序填充数字的矩阵,数字从外向内呈螺旋状排列。以下是实现方法:
初始化变量
需要定义矩阵的大小(n x n)并初始化一个二维数组:
function generateSnakeMatrix(n) {
const matrix = Array(n).fill().map(() => Array(n).fill(0));
let num = 1;
let rowStart = 0, rowEnd = n - 1;
let colStart = 0, colEnd = n - 1;
}
填充外圈数字
按照顺时针方向填充外圈数字:
while (rowStart <= rowEnd && colStart <= colEnd) {
for (let i = colStart; i <= colEnd; i++) {
matrix[rowStart][i] = num++;
}
rowStart++;
for (let i = rowStart; i <= rowEnd; i++) {
matrix[i][colEnd] = num++;
}
colEnd--;
for (let i = colEnd; i >= colStart; i--) {
matrix[rowEnd][i] = num++;
}
rowEnd--;
for (let i = rowEnd; i >= rowStart; i--) {
matrix[i][colStart] = num++;
}
colStart++;
}
完整代码示例
function generateSnakeMatrix(n) {
const matrix = Array(n).fill().map(() => Array(n).fill(0));
let num = 1;
let rowStart = 0, rowEnd = n - 1;
let colStart = 0, colEnd = n - 1;
while (rowStart <= rowEnd && colStart <= colEnd) {
for (let i = colStart; i <= colEnd; i++) {
matrix[rowStart][i] = num++;
}
rowStart++;
for (let i = rowStart; i <= rowEnd; i++) {
matrix[i][colEnd] = num++;
}
colEnd--;
for (let i = colEnd; i >= colStart; i--) {
matrix[rowEnd][i] = num++;
}
rowEnd--;
for (let i = rowEnd; i >= rowStart; i--) {
matrix[i][colStart] = num++;
}
colStart++;
}
return matrix;
}
console.log(generateSnakeMatrix(4));
输出结果
对于4x4矩阵,输出如下:
[
[1, 2, 3, 4],
[12, 13, 14, 5],
[11, 16, 15, 6],
[10, 9, 8, 7]
]
算法复杂度
该算法的时间复杂度为O(n²),空间复杂度为O(n²),其中n是矩阵的维度。







