如何编写一个函数来查找PHP中缺少的数字

时间:2014-04-26 08:12:52

标签: php

我是PHP的新手。我被给了以下作为作业: 编写一个名为findMissing的php函数,它接收3个参数。功能必须 确定并返回数字数组中缺少的数字 - 注意:只有一个数字 在系列数字中缺少,你必须找到的数字。所有数字都将是 整数。 ◦$ start:这是一个整数,表示数组可以包含的最小数量。 ◦$ end:这是一个整数,表示数组可以包含的最大数量。 ◦$ numbers:数字介于$ start和$ end之间的数组。这个数组可能没有 被分类。无法保证数组中的第一个或最后一个数字对应 分别为$ start和$ end。 $ start和$ end包含在范围内 数字 例如:findMissing(1,5,array(2,5,1,3));必须返回4作为 缺少号码。数组$ numbers将始终包含$ end - $ start number 元件。

到目前为止,我有以下代码:

 function findMissing($start,$end,$numbers)
        {
            if ($start >0 && $end >0){

                for ($x=0; $x<=end; $x++) {
                  $numbers=array($x);         
             } 
               }    
            foreach ($numbers as $value){

                echo $value;
            }
        }

请帮忙,因为我被困了

3 个答案:

答案 0 :(得分:0)

当你遇到问题时,这不仅仅是编程,首先要做的是你需要在头脑中描绘解决方案,看看它是否有效。

鉴于这项任务,我想到了一些想法:

您可以对数组进行排序并循环播放,只要数字不等于前一个数字+ 1,您就可以安全地说previous number + 1是您丢失的数字。

您可以解决此问题的另一种方法是在$start$end的范围内循环,并检查每个值是否在in_array()的给定数组中。一旦你遇到一个不值的东西,不用说,这就是你的号码。

如果你的目标不是为了学习,而是为了摆脱那项功课,请发表评论,我会为你写下这个功能。

答案 1 :(得分:0)

哥们!!这是一个简单的解决方案             将$ start和$ end之间的所有数字添加为$ sumAll             并将该数组的所有元素添加为$ sum             现在$ missingNumber = $ sumAll- $ sum !! 这样做会很有趣:)

答案 2 :(得分:-2)

你可以试试这个

<?php

$start      = 1;
$end        = 5;
$numbers    = array(2,5,1,3);

findMissing($start,$end,$numbers);

function findMissing($start,$end,$numbers)
{
    $range[$start-1] = 0;   // here, it will be $range[0] = 0;
    for($i=$start; $i<=$end; $i++)
    {
        $range[$i] = $range[$i-1]+1;
        if(!in_array($range[$i], $numbers))
        {
            echo '<br> Missing no= '. $i;
            //return $i;
        }

    }
}
?>

希望这会有所帮助......