仰望星空的人,不应该被嘲笑
题目描述
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
按照螺旋矩阵模拟即可,先从左到右,在从上到下,再从右到左,再从下到上。
每次进行cur++
操作,直到累加到total
为止。最后返回二维数组即可(没想到 js
二维数组也是这样方便…)
/**
* @param {number} n
* @return {number[][]}
*/
var generateMatrix = function(n) {
let top = 0, bottom =n-1
let left = 0, right = n-1
let res = []
for(let i=0;i<n;i++) res[i] = []
let cur = 1, total = n*n
while(cur<=total){
for(let i=left;i<=right;i++) res[top][i] = cur++ // 从左到右
top++
for(let i=top;i<=bottom;i++) res[i][right] = cur++ // 从上到下
right--
for(let i=right;i>=left;i--) res[bottom][i] = cur++ // 从右到左
bottom--
for(let i=bottom;i>=top;i--) res[i][left] = cur++ // 从下到上
left++
}
return res
};
最后
文章产出不易,还望各位小伙伴们支持一波!
往期精选:
访问超逸の博客,方便小伙伴阅读玩耍~
学如逆水行舟,不进则退