开始学算法(刷算法题)过程记录 3
题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数(返回true或false)
题目关键:数组中最右上角的数字是最上面一行中最大的和最右边一列中最小的,最左下角的数字是最左边一列最大的和最下面一行最小的

解题思路:
假如找7,从右上角看,9比7大,最右边一列比9还大,可以排除最右一列

同理,还是取最右上角的,8 还是比7大 再排除最右一列

再看最右上角,2比7小,2左边的比2都小,所以可以排除最上面一行,同理可以排除4所在行

再取右上角,每次循环前会进行一次判断右上角是否等于要找的数,发现是7返回true
算法实现:
这是从右上角开始找 还有一种解法是左下角开始找,原理是一样的,对比要找的数大小排除行列
不能选左上角或右下角原因是 都小 和 都大。1是最上面一列最小,又是最左边最小。无法排除行或列