C#列印單鏈表各節點資料的記憶體地址
阿新 • • 發佈:2020-12-31
輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字。
示例 1:
輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
輸出:[1,2,3,6,9,8,7,4,5
示例2:
輸入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
輸出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
思路:
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
if(!matrixSize){
*returnSize=0;
return NULL;
}
int ColSize=*matrixColSize;
*returnSize=matrixSize*ColSize;
int num=*returnSize;
int* val=(int*)malloc(sizeof(int)*num);
int x=0,y=0;
int count=0;
int no;
while (count<num){
no=0;
//左到右
while(no++<ColSize&&count<num){
val[count++]=matrix[y][x++];
}
y++,x--,matrixSize--,no=0;
//上到下
while(no++<matrixSize&&count<num){
val[count++]=matrix[y++][x];
}
y-- ,x--,ColSize--,no=0;
//右到左
while(no++<ColSize&&count<num){
val[count++]=matrix[y][x--];
}
x++,y--,matrixSize--,no=0;
//下到上
while(no++<matrixSize&&count<num){
val[count++]=matrix[y--][x];
}
ColSize--,y++,x++;
}
return val;
}