59. 螺旋矩阵 II
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
- 1 <= n <= 20
思路
模拟矩阵旋转
难点:矩阵边界值,旋转边界值
代码
class Solution {
public:
vector<vector<int>> generateMatrix(int n)
{
vector<vector<int>> maxtrix(n, vector<int>(n,0));
int i,j,k,count,t,p,flag;
i=0;
j=0;
k=0;
flag=0;
count=1;
// maxtrix[0][0]=1;
// printf("%d",n*n);
while(count<=n*n)
{
printf("k=%d,%d\n",k,k/4);
while(count)
{
printf("--------%d,%d,%d\n",i,j,maxtrix[i][j]);
if(!maxtrix[i][j])
{
maxtrix[i][j]=count;
printf("%d,%d--%d\n",i,j,count);
count++;
//边界值的设置
if((i==(k+1)/4&&k%4==3)||(j==(k+1)/4&&k%4==2)||(i==n-((k+1)/4)-1&&k%4==1)||(j==n-((k+1)/4)-1&&k%4==0))
{
printf("---------xx\n");
break;
}
t=i;
p=j;
flag=0;
}
// else{
// flag++;
// if(flag==2){
// i=t;
// j=p;
// }
// }
if(k%4==0)//向右
j++;
else if(k%4==1)//向下
i++;
else if(k%4==2)//向左
j--;
else//向上
i--;
printf("!!------%d,%d,%d\n",i,j,maxtrix[i][j]);
}
k++;
}
return maxtrix;
}
};