从1-10开始,找到下一个缺失的数字?

时间:2014-09-08 20:02:53

标签: php arrays

说我有以下数组:1,2,3,6,8

我需要找到下一个缺失的数字是4

执行此操作的最简单,最快捷的方式是什么?

4 个答案:

答案 0 :(得分:6)

$missing = array_diff(range(min($myArray), max($myArray)), $myArray);
$nextMissing = (!empty($missing)) ? array_shift($missing) : max($myArray) + 1;

答案 1 :(得分:0)

迭代数组并检查in_array()应该这样做。

$missing = null;

for ($i = 1; $i <= 10; $i++) {
    if (!in_array($i, $myArray)) {
        $missing = $i;
        break;
    }
}

if (!is_null($missing)) {
    // hit
}

答案 2 :(得分:0)

问题的措辞很差,但根据我的理解,你有1,2,3然后你需要检查下一个值应该是4

$prev = array[0];
for($i = 1; $i < count(array); $i++){
   if(array[$i] != prev+1) return (prev+1) 
}

答案 3 :(得分:0)

我会这样做(如果数组已排序):

$array = array(1, 2, 3, 6, 8);
$size = count($array);
$missing = 0;
$firstval = $array[0];

for ($i = 0; $i < $size; ++$i) {
    if ($firstval++ != $array[$i]) {
        $missing = $firstval - 1;
        break;
    }
}

if ($missing != 0) echo $missing.' is missing'.PHP_EOL;

给出了:

4 is missing