为了账号安全,请及时绑定邮箱和手机立即绑定

在给定整数值的给定数组中查找给定整数的后继者和前任者

在给定整数值的给定数组中查找给定整数的后继者和前任者

PHP
墨色风雨 2023-06-24 18:19:54
假设我有一个这样的数组:[12,3,4,5,8,9,11,20]给定数字 7,那么数组中的前任/后继将是 5/8 如何有效地找到这些数字?目前我的解决方案只是通过比较来寻找继任者。
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

您需要迭代数组并比较每个数字,然后保存数字(如果它比旧数字更接近您的针):


function precessorAndSuccessor(array $numbers, int $needle){

    $pre = NULL;

    $suc = NULL;

    foreach($numbers as $number){

        if($number < $needle){

            if($pre === NULL || $pre < $number){

                $pre = $number;

            }

        }elseif($number > $needle){

            if($suc === NULL || $suc > $number){

                $suc = $number;

            }

        }

    }

    return [

        "predecessor" => $pre,

        "successsor" => $suc

    ];

}

``


查看完整回答
反对 回复 2023-06-24
?
繁星coding

TA贡献1797条经验 获得超4个赞

如果对数组进行排序,则只需运行并检查:


$num = 7;

$pre = $suc = false;

sort($array);


foreach($array as $v) {

    if($v < $num) { $pre = $v; }

    if($v > $num) { $suc = $v; break; }

}


查看完整回答
反对 回复 2023-06-24
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信