給定整數 n,生成 n x n 矩陣,元素 1 到 n² 按順時針螺旋填入。例 n=3:
[ [1,2,3],
[8,9,4],
[7,6,5] ]
每層環由四段組成:右、下、左、上。第 k 層(從 0 起)每段長度 n - 2k - 1。奇數 n 中心單獨填 n²。

class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ans(n, vector<int>(n));
if (n <= 0) return ans;
int x = 0, y = 0, num = 0;
for (int len = n - 1; len >= 0; len -= 2) {
if (len == 0) { ans[x][y] = n * n; break; }
for (int i = 0; i < len; ++i) ans[x][y+i] = ++num; // 右
y += len;
for (int i = 0; i < len; ++i) ans[x+i][y] = ++num; // 下
x += len;
for (int i = 0; i < len; ++i) ans[x][y-i] = ++num; // 左
y -= len;
for (int i = 0; i < len; ++i) ans[x-i][y] = ++num; // 上
x = x - len + 1; y += 1; // 進入下一層起點
}
return ans;
}
};