第一题
题目
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
思路
思路一: 粗暴查找(两层循环,遍历所有array)——可用二分法提高查找效率
思路二:
- 假定
target=9
,由二维数组的左下角(右上角亦可,这里不重复演示)作为入口,即29。
- 为什么以左下角或右上角为入口?
基于题目的二维数组具有有序性,以左下角为例
当target>当前数字
,则往右继续寻找下一个目标来和target做对比。
当target<当前数字
,则往上继续寻找下一个目标来和target做对比。
而左上、右下,周边均为大于当前值的值,无法根据 target与当前数字的对比作出准确的行为。
- 基于数组的有序性,9<29,则往上走
- 9<25,则继续往上走
- …
- 最后过程如下:
代码实现
思路一代码:
(双层粗暴查找)
function Find(target, array)
{
for(var i = 0; i < array.length; i+&#