题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如:1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 要找的数是7. 因为二维数组每行从左向右递增,每列从上到下递增,我们可以先和右上角的9比,7<9,说明9所在列都比7大,就可以去除9所在列;接着和右上角的8比,发现7<8,则去除8所在列;7与2相比,7>2,说明7 要不在2的下方要不在2的右方,因为2的右方两列都去除了,则7一定在2的下方,又因为行是从左至右递增的,就可以去除2所在行;7与4相比,7>4,去除4说在行;7与7比等于,查询完毕。 代码如下: public class Solution{ public boolean Find(int target,int[][] array){ int row=0; int col=array[0].length-1; while(row<=array.length-1&&col>=0){ if(target==array[row][col]) return true; else if(target>array[row][col]){ row++; }else{ col–; } } return false; }
}