每行从左到右,每列从上到下(严格)递增的二维数组中,判断某个数是否存在
算法(利用有序,不断排除一行或一列,缩小范围):
规律:首先选取数组中右上角的数字。...如果该数字等于要查找的数字,查找过程结束:
* 如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行。...* 也就是说如果要查找的数字不在数组的右上角,则每-次都在数组的查找范围中剔除)行或者一列,这样每一步都可以缩小
* 查找的范围,直到找到要查找的数字,或者查找范围为空。...得到:
{1, 2, 8},
{2, 4, 9},
{4, 7, 10},
{6, 8, 11}
2、7和右上角的8比较后剔除最右边一列。...时间复杂度: O(n)
算法的注意事项:如果需要输出目标数字存在的个数或所在的位置,且目标数字重复存在时,比如目标数字是4,,找到第一个数字4后,把该数字所在的行和列都剔除,继续查找。