vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ans(n, vector<int>(n,0));
int k = 1;
int left = 0, right = n-1, up = 0, down = n-1;
//顺时针旋转
while(1){
//向右
for (int i = left; i <= right; i++) ans[up][i] = k++;
if (++up > down) break;
//向下
for (int i = up; i <= down; i++) ans[i][right] = k++;
if (--right < left) break;
//向左
for (int i = right; i >= left; --i) ans[down][i] = k++;
if (--down < up) break;
//向上
for (int i = down; i >= up; --i) ans[i][left] = k++;
if (++left > right) break;
}
return ans;
}