【题目概要】
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]
【代码示例】
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
if(matrixSize == 0)
{
*returnSize = 0;
return 0;
}
int total = *matrixColSize * matrixSize;
*returnSize = total;
int *re = (int*)malloc(sizeof(int)*total);
int i=0, j=-1, num=0, level=0;
while(num < total)
{
while(j < (*matrixColSize-1-level))
re[num++] = matrix[i][++j];
while(i < (matrixSize-1-level))
re[num++] = matrix[++i][j];
if(num >= total)
break;
while(j > level)
re[num++] = matrix[i][--j];
//为什么在最后一次向上遍历的过程,现将level+1
level++;
while(i > level)
re[num++] = matrix[--i][j];
}
return re;
}