您的位置:首页 > Web前端

剑指OFFER-二维数组中的查找

2017-03-19 15:54 239 查看

题目

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

题解

最笨的办法当然是按照顺序挨个搜索,如果数组无序的话,这也是唯一的办法,不过既然数组有序,就可以简单很多,一是可以通过每列的二分查找的方式搜索。不过更简单的是因为数组排列从左到右递增,从上到下递增。那每一列最左边的数就可以作为一个点,如果要搜索的数字比它小,就在上一列,如果比它大,就往右边找。所以,我们从左下角开始查找。

代码

<?php

function Find($target, $array)
{
$y_len = count($array);
$x_len = count($array[0]);
for($i = $y_len-1, $j = 0; $i>=0&&$j<$x_len;){

if($target == $array[$i][$j]){
return true;
}elseif($target < $array[$i][$j]){
$i--;
continue;
}elseif($target > $array[$i][$j]){
$j++;
continue;
}
}
return false;
}


同理,也可以从右上角开始。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二维数组 搜索