一、问题描述
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
题目链接:螺旋矩阵 II
二、题目要求
样例 1
输入: n = 3 输出: [[1,2,3],[8,9,4],[7,6,5]]
样例 2
输入: n = 1 输出: [[1]]
考察
模拟计算 建议用时15~35min
三、问题分析
只不过是第一道题目给你数组,让你输出。第二道题目给你范围,让你输出数组。建议大家先做 螺旋矩阵 I
题目(讲解比较详细),回来再做这一题巩固一下相关的知识。
四、编码实现
classSolution { public: vector<vector<int>>generateMatrix(intn) { intk=1,i,u=0,d=n-1,l=0,r=n-1;//初始化数据,定义上下左右四个方向范围vector<vector<int>>v(n, vector<int>(n));//定义二维数组while(1)//循环判断 { for(i=l;i<=r;i++) v[u][i]=k++;//l->r方向if(++u>d) break; for(i=u;i<=d;i++) v[i][r]=k++;//u->d方向if(--r<l) break; for(i=r;i>=l;i--) v[d][i]=k++;//r->方向if(--d<u) break; for(i=d;i>=u;i--) v[i][l]=k++;//d->u方向if(++l>r) break; } returnv; } };