利用上下左右对称,当遍历一圈后,向内缩小一圈,上下左右各减一行,竖
/**

  • @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
    int col=0;
    int row=0;
    returnSize=matrixColLenmatrixRowLen;
    int *p=(int
    )calloc(matrixColLenmatrixRowLen,sizeof(int));
    int len=0;
    while(len!=*returnSize)
    {
      for(int i=col;i<*matrixColLen-col;i++)
      {
          p[len++]=matrix[col][i];
      }
      if(len==*returnSize)
      {
          break;
      }
      for(int i=row+1;i<matrixRowLen-row;i++)
      {
          p[len++]=matrix[i][*matrixColLen-col-1];
      }
      if(len==*returnSize)
      {
          break;
      }
      for(int i=*matrixColLen-col-2;i>=col;i--)
      {
          p[len++]=matrix[matrixRowLen-row-1][i];
      }
      col++;
      if(len==*returnSize)
      {
          break;
      }
      for(int i=matrixRowLen-row-2;i>row;i--)
      {
          p[len++]=matrix[i][row];
      }
      row++;
    }
    return p;
    }