给出整数 n, 返回一个大小为 n * n 的螺旋矩阵
样例
样例 1:
输入 : n = 3
输出 :
[
[1,2,3]
[8,9,4]
[7,6,5]
]
样例 2:
输入 : n = 5
输出 :
[
[1,2,3,4,5]
[16,17,18,19,6]
[15,24,25,20,7]
[14,23,22,21,8]
[13,12,11,10,9]
]
class Solution {
public:
/**
* @param n: a Integer
* @return: a spiral array
*/
vector<vector<int>> spiralArray(int n) {
// write your code here
int num=1;
vector<vector<int>> result(n);
int row=0;//指向第一行
int col=n-1;//指向最后一列
int temp=n-1;
for (int i = 0; i < n; i++) {
/* code */
result[i].resize(n);
}
for (int i = 0; i < n; i++) {//第一行进行初始化
/* code */
result[0][i]=num;
num++;
}
while(temp)
{
for (int i = 1; i <= temp; i++) {//从最后一列开始的每一行数据
/* code */
row++;
result[row][col]=num;
num++;
}
for (int i = 1; i <= temp ; i++) {//最后一行开始的每一列数据
/* code */
col--;
result[row][col]=num;
num++;
}
temp--;//最后一个数据必为左转,左转后若temp=0即为结束
if(temp==0) break;
for (int i = 1; i <= temp; i++) {//第一列开始的每一行数据
/* code */
row--;
result[row][col]=num;
num++;
}
for (int i = 1; i <= temp; i++) {//最上面一行的每一列数据
/* code */
col++;
result[row][col]=num;
num++;
}
temp--;
}
return result;
}
};