1. 思路
和之前的螺旋矩阵类似,只不过可以通过数组值是否为0判断是否已经填写过。
2. 代码
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ret(n, vector<int>(n, 0));
if(n == 0) return ret;
int k = 1, target = n * n, i = 0, j = 0;
ret[0][0] = 1;
while(k < target)
{
while(i+1 < n && ret[j][i+1] == 0)ret[j][++i] = ++k;
while(j+1 < n && ret[j+1][i] == 0)ret[++j][i] = ++k;
while(i-1 >= 0 && ret[j][i-1] == 0)ret[j][--i] = ++k;
while(j-1 >= 0 && ret[j-1][i] == 0)ret[--j][i] = ++k;
}
return ret;
}
};