题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数据中是否含有该整数。
思路:因为行从左到右和列从上到下都是递增排序的,所以选择右上角作为起始点和整数进行比较,当大于整数时,说明该整数在起始点的左侧,列--,当小于该整数时,说明该整数在起始点的下方,行++
代码如下:
public static boolean find(Integer matrix[][],int number){ int rows=matrix.length;//行 int columns=matrix[0].length;//列 boolean find=false; if (matrix!=null&&rows>0&&columns>0){ int row=0; int column=columns-1; while (row<rows&&column>0){ if (matrix[row][column]==number){ find=true; break; }else if (matrix[row][column]>number){ --column; }else { ++row; } } } return find; }