牛客网-剑指offer 第一题(二维数组中的查找)
生活随笔
收集整理的這篇文章主要介紹了
牛客网-剑指offer 第一题(二维数组中的查找)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,
輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
/*第一種 將每一行看成遞增數組 進行二分查找*/
function Find($target, $array)
{//第一種解法:將每一行看成有序遞增數組 進行二分查找//獲得行$hang=count($array);$lie=count($array[0]);for($i=0;$i<$hang;$i++){//每行$s=0;$h=$lie-1;while($s<=$h){$middle=(int)(($s+$h)/2);if($target<$array[$i][$middle]){$h=$middle-1;}elseif($target>$array[$i][$middle]){$s=$middle+1;}else{return true;}}}return false;}/*第二種 先變成一維數組 再進行順序查找*/
function Find($target, $array)
{//思路:先變成一維數組 再進行順序查找$res=[];foreach($array as $k1=>$v1){foreach($v1 as $k2=>$v2){$res[]=$v2;}}//對res進行順序查找$count=count($res);for($i=0;$i<$count;$i++){if($target==$res[$i]){break;}}if($i<$count){return true;}else{return false;}}/*第三種 左下角數組向上遞減 向右遞增 取左下角值與target進行比較 target小于左下角則向上移動 大于則向右移動*/
function Find($target, $array){$hang=count($array)-1;$lie=count($array[0])-1;$zuoxia=$array[0][$hang-1];$row=$hang;$col=0;while ( $row>=0 && $col <=$lie) {if($target>$array[$row][$col]){$col++;}elseif ($target<$array[$row][$col]) {$row--;}else{return true;}}return false;
}
總結
以上是生活随笔為你收集整理的牛客网-剑指offer 第一题(二维数组中的查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TP5 验证码功能实现(解决点击验证码不
- 下一篇: 牛客网-剑指offer 第二题(字符替换