题干:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
跟前面有一题非常像,ac代码如下
class Solution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>>result(n,vector<int>(n,0)); int num = 1; int sum = n * n; int x = 0,y = 0; while(num <= sum) { while(y < n && result[x][y] == 0)//向右 result[x][y++] = num++; x++,y--;//向下移一位,y已经变成了n while(x < n && result[x][y] == 0)//向下 result[x++][y] = num++; y--,x--; while(y >= 0 && result[x][y] == 0)//向左 result[x][y--] = num++; x--,y++; while(x >= 0 && result[x][y] == 0)//向上 result[x--][y] = num++; y++,x++; n--; } return result; } };