题目
给你一个正整数 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] = 1let num = 1, x = 0, y = 0;while (num < n * n) {while (y + 1 < n && !matrix[x][y + 1]) matrix[x][++y] = ++numwhile (x + 1 < n && !matrix[x + 1][y]) matrix[++x][y] = ++numwhile (y - 1 >= 0 && !matrix[x][y - 1]) matrix[x][--y] = ++numwhile (x - 1 >= 0 && !matrix[x - 1][y]) matrix[--x][y] = ++num}return matrix
};