题目
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
题解
leetcode 大部分题解写的不知道都是什么——代码非常杂乱。
还是直接放上紫书(《算法竞赛入门指南》)的原文:
然后改写成JS的即可:
/**
* @param {number} n
* @return {number[][]}
*/
var generateMatrix = function(n) {
const matrix = Array(n).fill(0).map(() => Array(n).fill(0));
matrix[0][0] = 1
let num = 1, x = 0, y = 0;
while (num < n * n) {
while (y + 1 < n && !matrix[x][y + 1]) matrix[x][++y] = ++num
while (x + 1 < n && !matrix[x + 1][y]) matrix[++x][y] = ++num
while (y - 1 >= 0 && !matrix[x][y - 1]) matrix[x][--y] = ++num
while (x - 1 >= 0 && !matrix[x - 1][y]) matrix[--x][y] = ++num
}
return matrix
};