网站是如何优化的,编程培训机构加盟怎样,销售网站需要备案么,十大网络安全上市公司题目描述#xff1a;
给你一个 m 行 n 列的矩阵 matrix #xff0c;请按照 顺时针螺旋顺序 #xff0c;返回矩阵中的所有元素。示例 1#xff1a;输入#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]]
输出#xff1a;[1,2,3,6,9,8,7,4,5]示例 2#xff1a;输入#xff…题目描述
给你一个 m 行 n 列的矩阵 matrix 请按照 顺时针螺旋顺序 返回矩阵中的所有元素。示例 1输入matrix [[1,2,3],[4,5,6],[7,8,9]]
输出[1,2,3,6,9,8,7,4,5]示例 2输入matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出[1,2,3,4,8,12,11,10,9,5,6,7]提示
m matrix.length
n matrix[i].length
1 m, n 10
-100 matrix[i][j] 100 算法
思路
边界判断同时每个for循环要判断是否超范围
代码实现
# includestdlib.h
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize) {*returnSizematrixSize*matrixColSize[0];//返回总量:m*n//matrixSize--m行数 matrixColsize[0]--某行的列数int *array(int*)malloc(sizeof(int)*(*returnSize));int left0,up0,rightmatrixColSize[0]-1,downmatrixSize-1;int index0;while(leftright updown){//边界不触碰//每次都要检查是否超范围for(int ileft;index*returnSize iright;i) array[index]matrix[up][i];up;for(int iup;index*returnSize idown;i)array[index]matrix[i][right];right--;for(int iright;index*returnSize ileft;i--)array[index]matrix[down][i];down--;for(int idown;index*returnSize iup;i--)array[index]matrix[i][left]; left;}return array;
}