《leetCode-php》二维矩阵查找

请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 

每一行的数字都从左到右排序 

每一行的第一个数字都比上一行最后一个数字大

<?php
/**
 * @param $arrMatrix
 * @param $target
 * @return boolean
 * @brief 二分查找
 */
function searchMatrix($arrMatrix, $target) {
    $length = count($arrMatrix);
    $width  = count($arrMatrix[0]);
    $start  = 0;
    $end    = $length * $width - 1;
    while ($start <= $end) {
        print $start . "\t" . $end ."\n";
        $mid = floor(($start + $end) / 2);
        if ($arrMatrix[floor($mid / $width)][$mid % $width] == $target) {
            return true;
        }
        if ($arrMatrix[floor($mid / $width)][$mid % $width] > $target) {
            $end = $mid - 1;
        }
        if ($arrMatrix[floor($mid / $width)][$mid % $width] < $target) {
            $start = $mid + 1;
        }
    }
    return false;
}
$arr = [
    [1,3,5,7],
    [10,11,16,20],
    [23,30,34,50],
];
$ret = searchMatrix($arr, 31);
print intval($ret);
发布了284 篇原创文章 · 获赞 32 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/less_cold/article/details/102829211
今日推荐