题目描述:
在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]]
给定 target = 7,返回 true。
给定 target = 3,返回 false。
0 <= array.length <= 500
0 <= array[0].length <= 500
利用两个for循环进行查找是我们容易想到的。但是需要59ms,时间复杂度是O(m*n).由于上面这个方法没有利用有序递增的优势,所以我们还可以改进。
新方法:我们可以先将target与每一行最后一个数(每行的最大数)进行比较,如果第一行的最后一个数小于target说明整个第一行都小于target,再比较第二行……如果在第4行的最后一个数大于target说明target在第4行中,我们只需要从第四行向前查找即可找到。