2015-06-13 39 views
-2

有人可以幫我把這個挑戰開始:尋找失蹤人數在一個範圍 - 的Javascript挑戰

鑑於99,999唯一編號隨機順序從1到100,00數組,找到一個從列表中缺少的數字。

我不確定如何開始思考它。

+0

你應該重新短語的問題,並提供一些嘗試。 –

+0

你怎麼填寫99999的數組中的10000個整數並重新排列 – bugwheels94

+0

@Ankit:我認爲這是一個錯字,我認爲它是1到100,000 - 但是當然,你也可以做另一個,他們不會是*整個*號碼。 –

回答

7

陣列除缺號中的每個數字,你是描述一個arithmetic progression,它有一個漂亮的公式來計算它的總和。所以你可以遍歷數組,然後求和,然後從公式中減去它。差異將是缺少的元素:

function missing(arr) { 
    var sum = 0; 
    for (var i = 0, len = arr.length; i < len; ++i) { 
     sum += arr[i]; 
    } 
    var expected = 100000 * (1 + 100000)/2; 
    var missing = expected - sum; 
    return missing; 
} 
+2

有點不僅僅是幫助OP自己開始思考問題,但是這是正確的 – jamylak

+1

我認爲你的意思是在循環中使用'arr [x]'? –

+2

不要使用'for in'循環數組,或者如果這樣做,請使用安全措施。 [更好的選項在這個答案。](http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript/9329476#9329476) –

4

如果你想這樣做,不浪費任何空間存儲號碼,

開始與1+2+3+4+... sum

然後減去總和

+1

聰明。 ....... –