給定一個(gè)二維數(shù)組,數(shù)組每行從左到右都是遞增的;沒列也是遞增的。
請(qǐng)完成一個(gè)函數(shù),輸入如上二維數(shù)組和一個(gè)整數(shù),函數(shù)功能為判斷該整數(shù)是都存在于數(shù)組中。
時(shí)間復(fù)雜度盡可能低。(請(qǐng)說明時(shí)間復(fù)雜度)
$arr = array(
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
);
$findParam = 7;
var_dump( find($arr, $findParam) );
/**
* 順序查找——時(shí)間復(fù)雜度O(n2)
*/
function find($arr, $findParam) {
//將數(shù)據(jù)放在坐標(biāo)右上角array[0][col]
$row = 0; //行
$col = count($arr[0]) - 1;//列
while ($row <= count($arr) - 1 && $col >= 0) {
if ($findParam > $arr[$row][$col])
$row++;//遇到大的下移
else if ($findParam < $arr[$row][$col])
$col--;//遇到小的左移
else
return true;
}
return false;
}