难度:中等。
把【54. 螺旋矩阵】的代码拿来改一下即可。
正确解法:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> matrix(n);
for(int i = 0; i < n; i++)matrix[i].resize(n);
int k = 0, i = 0, j = 0, t = 1;
matrix[0][0] = t;
while(true){
if(j + 1 >= n - k)break;
for(j = j + 1; j < n - k; j++)matrix[i][j] = ++t;
j--;
if(i + 1 >= n - k)break;
for(i = i + 1; i < n - k; i++)matrix[i][j] = ++t;
i--;
if(j - 1 < k)break;
for(j = j - 1; j >= k; j--)matrix[i][j] = ++t;
j++;
k++;
if(i - 1 < k)break;
for(i = i - 1; i >= k; i--)matrix[i][j] = ++t;
i++;
}
return matrix;
}
};
结果: