2016-02-04 32 views
-3
$var=array(1,5,6,7,11,2,.......,45,100); 

在上面的數組中,總數爲99(從1到100,但缺失的數量在1到100之間)。找到失蹤的號碼。從陣列

我想找到缺少的不。

+1

sort($ var)。然後做一個foreach循環並且並行增加一個計數器。如果計數器與陣列中的元素不匹配,則計數器指示(一個)丟失的數字。 – hherger

+0

我想要不對數組進行排序。 –

+2

我投票結束這個問題作爲題外話,因爲這不是作業生成器。 –

回答

0

你可以試着和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); 
0

我會產生所有元素的數組,然後用得到的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) 
0

嘗試

  • 對數組進行排序。
  • 使用循環,檢查是否(a [i]!= a [i-1] + 1),則(a [i] - 1)是缺失的數字。
+0

我想要不對數組進行排序。 –