給出整數 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;
}
};