给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
解题思路:定义一个nxn空矩阵,然后模拟整个向内环绕的填入过程。始终按照从左到右、从上到下、从右到左、从下到上填入顺序循环。注意循环条件使用num<=nxn,防止n为奇数时,矩阵中心数字无法被填充
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> matrix(n,vector<int>(n));
int left=0,right=n-1,top=0,brown=n-1;
int num=1,tar=n*n;
while(num<=tar){
for(int i=left;i<=right;i++)
matrix[top][i]=num++;
top++;
for(int i=top;i<=brown;i++)
matrix[i][right]=num++;
right--;
for(int i=right;i>=left;i--)
matrix[brown][i]=num++;
brown--;
for(int i=brown;i>=top;i--)
matrix[i][left]=num++;
left++;
}
return matrix;
}