1.题目要求
2.思路分析
循环不变量的思想,想好一共转了几圈,每一圈怎么写?四个for循环
3.实现代码
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> result(n, vector<int>(n));
int count=1; //用于记录存入数组当中的数;
int offset=1;//用于记录圈数
int start_x=0,start_y=0; //x和y开始的地方
int num=n/2;
while(num)
{
int i=start_x,j=start_y;
for(j=start_y;j<n-offset;j++) result[i][j]=count++;
for(i=start_x;i<n-offset;i++) result[i][j]=count++;
for(j;j>start_y;j--) result[i][j]=count++;
for(i;i>start_y;i--) result[i][j]=count++;
start_x++;
start_y++;
offset++;
num--;
}
if(n%2!=0) result[start_x][start_y]=count;
return result;
}
};