题目描述
给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix 。
示例
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
题解
思路: 将整个过程分解为逐圈填充的过程,每一圈又分为上、右、下、左的填充过程,这里有几个问题需要注意。
- 当n为奇数时,中心点需要额外进行填充;
- 到执行到下边和左边时,起始位置的值正好是上边和右边的终止位置的值,因此不需要进行初始化;
总结
- 初始化一个空矩阵:new Array(n).fill(0).map(() => new Array(n).fill(0))。new Array(n).fill(0): 创建一个元素个数为n,元素值为0的数组; map(() => new Array(n).fill(0)):遍历数组中的元素,用回调函数的返回值替换原数组中的元素。