小言_互联网的博客

Leetcode刷题(54. 螺旋矩阵)

259人阅读  评论(0)

Leetcode刷题(54. 螺旋矩阵)

一.题目

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

示例 1:

输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]

示例 2:

[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]

二.代码(C)

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize)
{
    if(matrixSize==0 || matrixColSize==NULL)
    {
        *returnSize = 0;
        return NULL;
    }
    *returnSize = matrixSize*(*matrixColSize);
    int* y;
    y =(int *)malloc(*returnSize*sizeof(int));
    memset(y,0,*returnSize*sizeof(int));
    int i=0,j=0,k=0;
    //char flag1,flag2;
    printf("hang=%d,lie=%d\n",*matrixColSize,matrixSize);
    int rowMin=0,rowMax=matrixSize-1;
    int columnMin=0,columnMax=*matrixColSize-1;
    while(rowMin<=rowMax && columnMin<=columnMax)
    {
        printf("\nrowMin=%d,rowMax=%d,columnMin=%d,columnMax=%d\t",rowMin,rowMax,columnMin,columnMax);
        for(j=columnMin;j<=columnMax;j++)
        {
            printf("%d ",matrix[i][j]);
            y[k] = matrix[i][j];
            k++;
        }
        j--;
        for(i=rowMin+1;i<=rowMax;i++)
        {
            printf("%d ",matrix[i][j]);
            y[k] = matrix[i][j];
            k++;
        }
        i--;
        for(j=j-1;j>=columnMin;j--)
        {
            if(rowMin==rowMax)
                break;
            printf("%d ",matrix[i][j]);
            y[k] = matrix[i][j];
            k++;
        }
        j++;
        for(i=i-1;i>rowMin;i--)
        {
            if(columnMin==columnMax)
                break;
            printf("%d ",matrix[i][j]);
            y[k] = matrix[i][j];
            k++;
        }
        i++;
        rowMin++;
        rowMax--;
        columnMin++;
        columnMax--;
        printf("\nrowMin=%d,rowMax=%d,columnMin=%d,columnMax=%d\t",rowMin,rowMax,columnMin,columnMax);
    }
    return y;
}

三.提交记录


四.备注

按层索引,最外层->次外层->…


转载:https://blog.csdn.net/Umbraner/article/details/101373913
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场