题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排列。求该二维数组中是否存在给定数字number。
解题思路:
- 因为二维数组从左到右、从上到下都是递增有序的,因此我们可以从右上角开始比对,如果目标数字number大于二维数组右上角的数字m,则目标数字不会出现在m所在行,所以将m所在行砍掉;如果number小于m,说明number不会出现在m所在列,则将m所在列砍掉。
- 之后让目标数字number与新的右上角元素进行比较,如此循环,直到找到目标数字或二维数组为空。
代码实现:
/**
* 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排列。求该二维数组中是否存在给定数字number
* @param arrays 待检查二维数组
* @param number 查找的目标数字
* @return 返回是否找到
*/
public static boolean findNum(int[][