題目:
給你一個正整數 n ,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。
示例 1:

輸入:n = 3
輸出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
輸入:n = 1
輸出:[[1]]
思路與代碼
var generateMartix = function(n){
const res = Array.from({length:n}).map(()=>new Array(n));
let startx = 0,starty = 0, //定義每循環一個圈的起始位置
loop = n>>1 , //每個圈循環幾次,例如n為奇數3,那麼loop = 1隻是循環一圈,矩陣中間的值需要單獨處理
count = 1, //用來給矩陣每個空格指派
offset = 1; //每一圈循環,需要控制每一條邊周遊的長度
while(loop--){
//定義行列
let row = startx,column = starty;
//模拟上側從左到右
while(column<n-offset){
res[row][column++] = count++;
}
//模拟右側從上到下
while(row<n-offset){
res[row++][column] = count++;
}
//模拟下側從右到左
while(coulmn>startx){
res[row][column--] = count++;
}
//模拟左側從下到上
while(row>starty){
res[row--][column] = count++;
}
startx++;
starty++;
offset++;
}
}