思路:左闭右开,offset控制右开,loop控制圈数,圈数是n/2,从(0,0)顺时针旋转遍历,最先开始要创建一个二维数组!
题解c++:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0));
int startx=0;
int starty=0;
int loop=n/2;
int middle=n/2;
int count=1;
int offset=1;
int x;
int y;
while(loop--)
{
x=startx;
y=starty;
for(y=starty;y<n-offset;y++)
res[x][y]=count++;
for(x=startx;x<n-offset;x++)
res[x][y]=count++;
for( ;y>starty;y--)
res[x][y]=count++;
for( ;x>startx;x--)
res[x][y]=count++;
startx++;
starty++;
offset++;
}
if(n%2==1)
{
res[middle][middle]=count;
}
return res;
}
};