题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
分析:此题的常用方法时两重for循环嵌套,遍历一遍二维数组以判断所要查找的数是否在二维数组中,时间效率低下,此处不表。考虑此处二维数组的性质,可以从右上(左下)角位置的数字开始查找。如果所要查找的数大于数组此处的数字,则在去掉此行的剩下的数组中继续查找,反之继续在此行查找。代码如下:
public class Solution { public boolean Find(int [][] array,int target) { int row = array.length ; int colm = array[0].length ; if(array!=null && colm>0 && row>0){ int i = 0 ,j =colm-1 ; while(i < row && j>= 0){ if(array[i][j]==target){ return true ; } else if(array[i][j]>target){ j-- ; } else i++ ; } } return false ; } }