题解 | #螺旋矩阵#
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
/**
*
* @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 ) {
// write code here
if (matrix == NULL)
return NULL;
int *arr = (int*)malloc(sizeof(int) * (matrixRowLen * (*matrixColLen))); //存放返回的数组
int inRow = 0;
int inCol = 0;
int i = 0;
int finRow = matrixRowLen - 1;
int finCol = (*matrixColLen) - 1;
if (*matrixColLen == 1 && matrixRowLen == 1)
{
arr[0] = matrix[0][0];
}
else
{
while (i <= (matrixRowLen * (*matrixColLen) - 1))
{
if (i <= (matrixRowLen * (*matrixColLen) - 1))
for (int k = inCol; k <= finCol; k++)//上面一行
{
arr[i++] = matrix[inRow][k];
}
inRow += 1;
if (i <= (matrixRowLen * (*matrixColLen) - 1))
for (int j = inRow; j <= finRow; j++)//右边一列
{
arr[i++] = matrix[j][finCol];
}
finCol -= 1;
if (i <= (matrixRowLen * (*matrixColLen) - 1))
for (int k = finCol; k >= inCol; k--)//下面一行
{
arr[i++] = matrix[finRow][k];
printf("%d ",k);
}
finRow -= 1;
if (i <= (matrixRowLen * (*matrixColLen) - 1))
for (int j = finRow; j >= inRow; j--)//左边一列
{
arr[i++] = matrix[j][inCol];
}
inCol += 1;
}
}
*returnSize = matrixRowLen * (*matrixColLen);
return arr;
}
查看16道真题和解析