题目
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
代码
/**
* @param {number} n
* @return {number[][]}
*/
var generateMatrix = function(n) {
// let result = [];
// // 生成一个 n * n 的二维数组
// for(let i = 0; i < n; i++) {
// let arr = [];
// for(let k = 0; k < n; k++) {
// arr.push(0);
// }
// result.push(arr);
// }
let result = new Array(n).fill(0).map(() => new Array(n).fill(0));
let i = 0,
j = 0;
let count = 1;
let whileLoop = Math.floor(n / 2),
mid = Math.floor(n/2);
let offsetI = 1,
offsetJ = 1;
while(whileLoop) {
for(; i < n - offsetI; ++i) {
result[j][i] = count++;
}
for(; j < n - offsetJ; ++j) {
result[j][i] = count++;
}
for(; i >= offsetI ; --i) {
result[j][i] = count++;
}
for(;j >= offsetJ; --j) {
result[j][i] = count++;
}
i++;
j++;
offsetI++;
offsetJ++;
whileLoop--;
}
// 基数单独给中间位置赋值
if(n%2 != 0) {
result[mid][mid] = count;
}
return result;
};
let r = generateMatrix(9);
console.log('结果 = ', r);