一个m*n的矩阵中的数字各不相同,找出并返回所有的幸运数。
幸运数同时满足两个条件:
1.在同一行是最小的元素
2.在同一列是最大的元素
思路:可以先找出没行的最小值,在判断这个每行的最小值是不是这列的最大值,如果是,则输出,如果不是,则继续遍历。
经证明,
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* luckyNumbers (int** matrix, int matrixSize, int* matrixColSize, int* returnSize){
int*ans=(int*)malloc(sizeof(int*)*1);//开辟一块堆内存空间
int count=0;
for(int i=0;i<matrixSize;i++){
int min=100000;
for(int j=0;j<matrixColSize[i];j++){//找出每行的最小值
if(matrix[i][j]<min) min=matrix[i][j];
}
for(int j=0;j<matrixColSize[i];j++){
int flag=0;
if(min==matrix[i][j]){
for(int k=0;k<matrixSize;k++){
if(matrix[k][j]>min){ //判断是否为这列的最大值
flag++;
break;
}
}
if(flag==0){ //如果min是这列的最大值,则将min存入数组
ans[count++]=min;
}
break;
}
}
}
*returnSize=count;
return ans;
}