螺旋矩阵
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
数据范围:0<n,0<m, 100≤n,m≤100,矩阵中任意元素都满足 ∣val∣≤100
示例1
输入:[[1,2,3],[4,5,6],[7,8,9]]
返回值:[1,2,3,6,9,8,7,4,5]
运行代码:
/**
*
* @param matrix int整型二维数组
* @param matrixRowLen int matrix数组行数
* @param matrixColLen int* matrix数组列数
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int* spiralOrder(int** matrix, int matrixRowLen, int* matrixColLen, int* returnSize )
{
int i = 0, j = 0, iNdex = 0;
int shang = 0;
int xia = matrixRowLen-1;
int zuo = 0;
int you = *matrixColLen - 1;
while (1)
{
//向右
while(j < you)
{
returnSize[iNdex++] = matrix[i][j];
j++;
}
j++;
shang += 1;
if(shang > xia)
{
return 0;
}
//向下
while(i < xia)
{
returnSize[iNdex++] = matrix[i][j];
i++;
}
i--;
you -= 1;
if(zuo > you)
{
return 0;
}
//向左
while(j > zuo)
{
returnSize[iNdex++] = matrix[i][j];
j--;
}
j++;
xia -= 1;
if(shang > xia)
{
return 0;
}
//向上
while(i < shang)
{
returnSize[iNdex++] = matrix[i][j];
i++;
}
i--;
zuo += 1;
if(zuo > you)
{
return 0;
}
}
}