题目
点击前往
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
1 2
| 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
|
示例 2:
解题思路
模拟过程
- 模拟顺时针画矩阵的过程:
- 填充上行从左到右
- 填充右列从上到下
- 填充下行从右到左
- 填充左列从下到上
- 由外向内一圈一圈这么画下去。
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
|
var generateMatrix = function(n) { let up=0, right=n-1, left= 0, bottom = n-1,; let k=1; let result = new Array(n).fill([]).map(() => new Array(n).fill(0)); while(k <= Math.pow(n,2)){ for(let i =left;i<=right;i++){ result[up][i] = k; k++; } up++; for(let i=up; i <=bottom; i++){ result[i][right] = k; k++; } right--; for(let i =right; i>=left; i--){ result[bottom][i] = k; k++; } bottom--; for(let i=bottom; i>=up; i--){ result[i][left] = k; k++; } left++; } return result; };
|