平台公司名单如何优化网络连接
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
思路:模拟,核心是最边的元素位置在当前循环不赋值,留给下一轮子循环,使得循环有规律。 n*n的矩阵,总共大循环有n/2次,其中n为奇数那么中心的做特判,单独赋值
class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int> > res(n,vector<int>(n,0));int sx=0;int sy=0;int loop=n/2;//让出来一个位置,使得有规律int offset=1;int count=1;int mid=n/2;while(loop--){int i=sx;int j=sy;//第一行填充for(j;j<n-offset;j++){res[i][j]=count++;}for(i;i<n-offset;i++){res[i][j]=count++;}for(j;j>sx;j--){res[i][j]=count++;}for(i;i>sy;i--){res[i][j]=count++;}offset++;sx++;sy++;}if(n%2==1){res[mid][mid]=count;}return res;}};