找到缺失的编号.从数组


find the missing no. from the array

$var=array(1,5,6,7,11,2,.......,45,100);

在上面的数组中,总数是 99(从 1 到 100 但缺少 no.在 1 到 100 之间)。

我想找到那个缺失的不。

你可以

试试array_diff

<?php
for ($ii = 0; $ii < 100; $ii++)
    $completeArray[] = $ii;
$arrayPart = array(1,3,5,7,9,11,13);
$missing = array_diff($completeArray, $arrayPart);
var_dump($missing);

我会生成一个包含所有元素的数组,然后使用 array_diff() 得到 2 个数组之间的差异。

一个简单的例子:

$all = range(1,100);
$missing = array_reverse($all);  // to show that order / keys don't matter
unset($missing[41]);             // remove 1 item
var_dump(array_diff($all, $missing));

结果在:

array(1) {
  [58]=>
  int(59)
}

因此,在您的情况下,您所需要的只是:

array_diff(range(1, 100), $var)

尝试

  • 对数组进行排序。
  • 使用 for 循环,检查 (a[i] != a[i-1]
  • + 1),则 (a[i] - 1) 是缺失的数字。