题目描述:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路:
和54.螺旋矩阵思路一样,四个方向,四种走法
https://blog.csdn.net/llwvip/article/details/90550597
代码:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n));
int top = 0, botoom = n - 1, left = 0, right = n - 1;
int num = 1;
while(true)
{
for(int i = left; i <= right; i++)
res[top][i] = num++;
if(++top > botoom)
break;
for(int i = top; i <= botoom; i++)
res[i][right] = num++;
if(--right < left)
break;
for(int i = right; i >= left; i--)
res[botoom][i] = num++;
if(--botoom < top)
break;
for(int i = botoom; i >= top; i--)
res[i][left] = num++;
if(++left > right)
break;
}
return res;
}
};
结果显示: