<?php
/*
- [BM18 二维数组中的查找](https://www.nowcoder.com/share/jump/4163484761690939063920)
- 时间复杂度 O(m+n)
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param target int整型
* @param array int整型二维数组
* @return bool布尔型
*/
function Find( $target , $array )
{
// x*y 的二维数组
$sizeY = count($array[0]);
$sizeX = count($array);
if(!$array || $sizeX <= 0 || $sizeY <= 0) {
return false;
}
// 右上角
$i = 0;
$j = $sizeY - 1;
// 边界判定
while($i >= 0 && $j >= 0 && $i < $sizeX && $j < $sizeY) {
if($array[$i][$j] > $target) {
// 向左收拢
--$j;
} else if($array[$i][$j] < $target) {
// 向下收拢
++$i;
} else {
// bingo
return true;
}
}
return false;
}