给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
示例:
输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]
输入:n = 1 输出:[[1]]
代码:
class Solution {
public:
//模拟,
vector> generateMatrix(int n) {
//四个边界
int t = 0; //top 上边界
int b = n-1; //botton 下边界
int l = 0; //left 左边界
int r = n-1; //right 右边界
vector> res(n,vector(n));
int k = 1;
while(k<=n*n){ //while循环的判断不用考虑n是否是奇数,所以比较方便,不用特殊考虑奇数
//上边从左到右
for(int i=l;i<=r;++i,++k) res[t][i] = k;
++t; //上边界向下缩1
//右边界从上到下
for(int i=t;i<=b;++i,++k) res[i][r] = k;
--r; //右边界向左缩1
//下边从右到左
for(int i=r;i>=l;--i,++k) res[b][i] = k;
--b; //下边界向上缩1
//左边从下到上
for(int i=b;i>=t;--i,++k) res[i][l] = k;
++l; //左边界向右缩1
}
return res;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)