找出数字序列中第一个缺失的数字

2021-12-26 00:00:00 while-loop php

这是我尝试为这个问题寻找解决方案的第二天.

It's the second day I try to find a solution for this problem.

我有一个数组.

$datas;

$datas[0]; // 8000
$datas[1]; // 8001
$datas[2]; // 8003
$datas[3]; // 8004

我必须找到从 8000 开始的第一个缺失数字,在这种情况下是 8002.

I have to find the first missing number starting from 8000 in this case it's 8002.

我的想法是做这样的事情:

My idea is to do somethig like this:

$datas[0] +1 = $datas[1]

如果它是真正的端口,它不是免费的,我必须检查下一个,如果它是假的,则它是第一个免费号码.

if it's true port it's not free and I have to check the next one, if it's false it's the first free number.

我知道这不是正确的语法,但我在以正确的方式编写它时遇到了一些问题.

I know it's not a correct syntax but I have some problems writing it in the right way.

推荐答案

从低到高排序(如果还没有排序)然后从最低开始递增,检查是否在数组中:

Sort from lowest to highest (if not already sorted) and then increment from the lowest and check if it is in the array:

sort($datas); 
for($i=reset($datas); in_array($i, $datas); $i++);
echo $i;

reset 获取第一个数字,在本例中为 8000 开始,当 $i 不在 $i 中时,in_array 条件终止循环数组.

reset gets the first number, in this case 8000 to start and the in_array condition terminates the loop when $i is not in the array.

相关文章