/**
* @function 在一个二维数组中,每一行都按照从左向右递增顺序排序;
* 每一列都按照从上到下递增顺序排序。
* 1, 2, 8, 9
* 2, 4, 9, 12
* 4, 7 ,10, 15
* 6, 8 ,11, 17
* @author PC
* @descripte 假如找7,我们首先从右上角9 开始找,由于9大于7,并且9还是第四列最小的一个,则
* 可以将第四列去掉,不考虑。剩下的三列中,选取右上角8,开始分析,同样可以去掉
* 第三列,此时只需要考虑前两列。依然选取右上角2,此时2小于7,且2是第一行最大的数;
* 去掉第一行,依次这样分析...
*/
public class FindFormTowDimension {
public static void findItem(int [][] matrix ,int xt){
int m = matrix.length;
int n = matrix[0].length;
int i=0,j=n;
int ru = matrix[i][j-1];//rightUp位置的数字
while(i<m&&j>0){
if(ru>xt){
j = j-1;
if(j==0){
break;
}
}else if(ru<xt){
i = i + 1;
if(i==m)
break;
}else{
break;
}
ru = matrix[i][j-1];
}
if(i==m||j==0){
System.out.println("未找到"+xt+"这个元素");
}else{
System.out.println("find the"+xt+"在第"+(i+1)+"行,"+j+"列");
}
}
public static void main(String[] args) {
int [][]matrix = {{1, 2, 8, 9 ,10},{2, 4, 9, 12 , 14},
{4, 7 ,10, 15 , 16},{ 6, 8 ,11, 17,19}};
findItem(matrix,12);
}
}
剑指offer面试题java实现之题3:二维数组中的查找
最新推荐文章于 2021-08-21 16:40:55 发布