题目描述:输入一个3行4列的,返回一个值,这个值为一行中的最大值且为当前列的最小值,若存在这样的值则返回,不存在则返回-1。
package java_problem;
import java.util.Scanner;
public class FindArrayNumber {
//判断某个数是否为某个数组的某列的最小值
public static boolean isColMin(int[][] arr,int n,int m){
int colMin=arr[0][0];
int[] colArr=new int[4];
// List<Integer> al=new ArrayList<Integer>();
//求出每一列最小值放入cowMax数组中
for(int j=0;j<4;j++){
colMin=arr[0][j];
for(int i=0;i<3;i++){
if(arr[i][j]<colMin){
colMin=arr[i][j];
}
}
colArr[j]=colMin;
// al.add(colMin);
}
return n==colArr[m];
}
public static int yqtFind(int[][] arr){
int rowMax=arr[0][0];
int[] rowArr=new int[3];
//求出每一行最大值放入rowMax数组中
for(int i=0;i<3;i++){
rowMax=arr[i][0];
int m=0;
for(int j=0;j<4;j++){
if(arr[i][j]>rowMax){
rowMax=arr[i][j];
m=j;
}
}
if(isColMin(arr,arr[i][m],m)){
return arr[i][m];
}
rowArr[i]=rowMax;
}
// System.out.println(Arrays.toString(colArr));
// System.out.println(Arrays.toString(rowArr));
return -1;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[][] arr=new int[3][4];
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
arr[i][j]=sc.nextInt();
}
}
// System.out.println(findNumber(arr));
System.out.println(yqtFind(arr));
}
}