题目描述
给定一个正整数 n,生成一个 n × n 的螺旋矩阵 II。
输入
一个整数 n。
输出
一个 n × n 的二维数组,表示螺旋矩阵。
示例
输入:n = 3 输出:[[1,2,3], [8,9,4], [7,6,5]]
解法一
解题思路:
我们可以使用四个指针来模拟螺旋矩阵的生成过程。从左上角开始,向右填充数字,然后向下,向右,向上,最后向左填充数字,直到所有位置都被填充。
/*
* @lc app=leetcode.cn id=59 lang=javascript
*
* [59] Spiral Matrix II
*/
// @lc code=start
function generateMatrix(n) {
let result = Array.from({ length: n }, () => new Array(n).fill(0));
let value = 1;
let left = 0, right = n - 1, top = 0, bottom = n - 1;
while (value <= n * n) {
for (let i = left; i <= right; i++) result[top][i] = value++;
top++;
for (let i = top; i <= bottom; i++) result[i][right] = value++;
right--;
if (top <= bottom) {
for (let i = right; i >= left; i--) result[bottom][i] = value++;
bottom--;
}
if (left <= right) {
for (let i = bottom; i >= top; i--) result[i][left] = value++;
left++;
}
}
return result;
}
// @lc code=end