判断一个二维数组中是否存在某个值
该数组满足
- 每一行元素按从左到右递增顺序排列
- 当前行的第一个元素大于上一行的最后一个元素
假设二维数组的维度是m × n
考虑二维数组中第0行最后一列的元素matrix[i][j],即i = 0, j = n - 1
如果matrix[i][j] == target,那么直接返回就可以。
现在考虑不相等的情况,根据数组的排列情况可知
由matrix[i][j]的位置可知,在第i行,没有比matrix[i][j]大的值;在第j列,没有比matrix[i][j]小的值,即
matrix[i][j - 1] < matrix[i][j]并且matrix[i + 1][j] > matrix[i][j]
也就是说第一个比matrix[i][j]大的元素是matrix[i + 1][j],而第一个比matrix[i][j]小的元素是matrix[i][j - 1]