思路
1、-101标记已走过的路线
2、优先级 右 —> 下 —> 左 —> 上
3、每变向一次,就一条道走到黑,除非碰壁(越界)或者value = -101
效果
代码
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
int len=matrixSize*matrixColSize[0],flag=0,i=0,j=-1;
int *ret=(int*)malloc(sizeof(int)*len);
*returnSize=len;
while(flag<len){
//右 列增
while(j+1<matrixColSize[0] && matrix[i][j+1]!=-101){
ret[flag++]=matrix[i][++j];
matrix[i][j]=-101;
}
//下 行增
while(i+1<matrixSize && matrix[i+1][j]!=-101){
ret[flag++]=matrix[++i][j];
matrix[i][j]=-101;
}
//左 列减
while(0<=j-1 && matrix[i][j-1]!=-101){
ret[flag++]=matrix[i][--j];
matrix[i][j]=-101;
}
//上 行减
while(0<=i-1 && matrix[i-1][j]!=-101){
ret[flag++]=matrix[--i][j];
matrix[i][j]=-101;
}
}
return ret;
}