问题描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
特点:如下图,基本上是一个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; } }