题目:
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。
示例:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,4,7,5,3,6,8,9]
说明:给定矩阵中的元素总数不会超过 100000 。
解释:
当横纵坐标和为基数时,往左下走,为偶数时往右上走。
int* findDiagonalOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
if(matrixSize==0){
*returnSize=0;
return 0;
}
int row=0,column=0,k=0;
*returnSize=matrixSize*(*matrixColSize);
int* res=malloc(*returnSize * sizeof(int));
while(k<*returnSize){
res[k]=matrix[row][column];
if((row+column)%2){
if(row==matrixSize-1) column++;
else{
row++;
if(column) column--;
}
}
else{
if(column==*matrixColSize-1) row++;
else{
column++;
if(row) row--;
}
}
k++;
}
return res;
}