输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
思路:

int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
if(!matrixSize){
*returnSize=0;
return NULL;
}
int ColSize=*matrixColSize;
*returnSize=matrixSize*ColSize;
int num=*returnSize;
int* val=(int*)malloc(sizeof(int)*num);
int x=0,y=0;
int count=0;
int no;
while(count<num){
no=0;
//左到右
while(no++<ColSize&&count<num){
val[count++]=matrix[y][x++];
}
y++,x--,matrixSize--,no=0;
//上到下
while(no++<matrixSize&&count<num){
val[count++]=matrix[y++][x];
}
y--,x--,ColSize--,no=0;
//右到左
while(no++<ColSize&&count<num){
val[count++]=matrix[y][x--];
}
x++,y--,matrixSize--,no=0;
//下到上
while(no++<matrixSize&&count<num){
val[count++]=matrix[y--][x];
}
ColSize--,y++,x++;
}
return val;
}
博客主要讲述输入一个矩阵,按从外向里顺时针顺序依次打印每个数字,还给出示例及限制条件,并提及思路。
1015

被折叠的 条评论
为什么被折叠?



