佛山网站seo,电商分享推广怎么做,wordpress的简单介绍,书籍网站开发多少钱题目描述#xff1a;
给你一个正整数 n #xff0c;生成一个包含 1 到 n2 所有元素#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1#xff1a;输入#xff1a;n 3
输出#xff1a;[[1,2,3],[8,9,4],[7,6,5]]
示例 2#xff1a;输入#…题目描述
给你一个正整数 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 算法
思路
设定四个边界每次输出完一行或者一列就移动边界直到边界相碰
代码实现
/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/
# includestdio.h
# includestdlib.h
int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {*returnSizen;//行空间*returnColumnSizes(int*)malloc(n*sizeof(int));//行空间for(int i0;in;i) (*returnColumnSizes)[i]n;//列空间int **matrix(int**)malloc(n*sizeof(int*));for(int i0;in;i){matrix[i](int*)malloc(sizeof(int)*n);}int num1;//四个边界值int rightn-1,left0,up0,downn-1;//条件不超过边界 or num不超过n^2while(updown leftright){ //updown leftright 或 numn*nfor(int ileft;iright;i) matrix[up][i]num;up;//上边界下移for(int iup;idown;i) matrix[i][right]num;right--;//右边界左移for(int iright;ileft;i--) matrix[down][i]num;down--;//下边界上移for(int idown;iup;i--) matrix[i][left]num;left;//左边界右移}return matrix;
}