2015-06-13 33 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

聪明。 ....... –