Java查找数组鞍点

来源:互联网 发布:矩阵论教程 张绍飞 编辑:程序博客网 时间:2024/06/06 09:50

题目:对于一个二维数组,鞍点就是二维数组中的一个元素,同时满足在该列上的最大值,在该行上的最小值。


当时时间很紧,我的思路就是用双重循环暴力解,对每个点都调用一次IsMax和IsMin来判断是否为鞍点。

而且这个题也说了是正整数,说了鞍点最多只有一个,说了数组是a[3][4]。

说了这么多,我还是做错了。

我居然找出了鞍点的仇人,满足在该列上的最小值,在该行上的最大值。

写完一运行,懵逼,进去debug还没看到问题,已经交卷了。

交卷之后心情很沮丧,后来找了个时间看代码,哎,不说了,行和列的ij搞反了......

戒骄戒躁啊!马前失蹄,悔恨不已啊!!

/** *  @author   LilyLee * @date     2017年5月17日 * @time     下午2:42:25 * @Version  1.0 * @email    lilylee_1213@foxmail.com * */public class Vivo_findIt {public static void main(String[] args) {int [][]num=new int[][]{{1,2,4,3},{2,4,10,1},{3,5,20,7}};int re=findIt(num);if(re>0){System.out.println(re);}}public static int findIt(int [][] num){int result=0;boolean flage=false;for(int i=0;i<3;i++){for(int j=0;j<4;j++){if(IsMax(num,j,num[i][j])&&IsMin(num,i,num[i][j])){result=num[i][j];//System.out.println(i+"  "+j);flage=true;}}}if(flage){return result;}return -1;}public static boolean IsMax(int [][] num,int column,int point){int re=point;for(int i=0;i<3;i++){if(re>=num[i][column]){re=num[i][column];}}if(re!=point){return false;}return true;}public static boolean IsMin(int [][] num,int row,int point){int re=point;for(int i=0;i<4;i++){if(re<=num[row][i])re=num[row][i];}if(re!=point){return false;}return true;}}


原创粉丝点击