题目(medium):
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

思路
坚持循环不变量原则。

坚持了每条边左闭右开的原则。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| const generateMatrix = (n) => { let startX = startY = 0; let loop = Math.floor(n/2); let mid = Math.floor(n/2); let offset = 1; let count = 1; let res = new Array(n).fill(0).map(() => new Array(n).fill(0));
while (loop--) { let row = startX, col = startY; for (; col < n - offset; col++) { res[row][col] = count++; } for (; row < n - offset; row++) { res[row][col] = count++; } for (; col > startY; col--) { res[row][col] = count++; } for (; row > startX; row--) { res[row][col] = count++; }
startX++; startY++;
offset += 1; } if (n % 2 === 1) { res[mid][mid] = count; } return res; }
|