题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题目链接:二维数组中的查找
解题思路:最原始的做法,二维数组整个扫描一遍,但是题目中这个数组是有规律的,这么做肯定会超时。数组从右到左递增,从上到下递增,所以最左上上角值最小,最右下角值大。
从第一行开始,目标值比当前行最右边的值小,则向前一列比较,否则向下一行比较。
PHP代码如下:
<?php
//从左到右,从上到下
function Find($target, $array){
$c = count($array[0])-1;
$r = 0;
if($target>$array[count($array)-1][$c] || $target<$array[0][0]) {
return false;
}
for($c;$c>=0;$c--){
if($array[$r][$c] <= $target ){
for($r;$r<count($array);$r++){
if($target == $array[$r][$c]){
return true;
}else if($array[$r][$c]>$target){
break;
}
}
}
}
return false;
}
?>