二维数组查找
问题描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
特点:如下图,基本上是一个m*n的矩阵,排列顺序如题目描述的一样

思路:从右上角的数开始查找,对于右上角的数来说,他的左侧的数比自己小,下方的数比自己大,如图:将待查找的数据与右上方的数比较时,如果比9小,查再查找9左边的数,如果比9大,则继续查找9下方的数,依次继续比较,知道找到或者x>=矩阵行数或者y<0,换句话说就是都出矩阵边界了还没有找到的话就不存在。
public class Solution {
public boolean Find(int target, int [][] array) {
int row=array.length;
System.out.println(row);
int width=array[row-1].length;
System.out.println(width);
int x=0;
int y= width-1;
while(x<row&&y>-1){
if(array[x][y]==target){
return true;
}else if(array[x][y]>target){
y--;
}else if(array[x][y]<target){
x++;
}
}
return false;
}
}
浙公网安备 33010602011771号