2014-07-16 52 views
-1

如何编写函数以查找数值数组的缺失元素,例如: getMissingElement([0,5,1,3,2,9,7,6,4])//返回8在JavaScript对象数组中找到缺失的元素?

+3

因此这里帮助现有的代码,而不是w礼仪代码给你。 –

+1

缺失元素的定义是什么? – Xotic750

+0

我完全不同意这个问题。 OP的问题很明显。如果你不明白这个问题,那是因为你不想理解这个问题,因为它清楚OP的意图。而且答案不一定是完整的代码,也可能是以正确的方向发送OP的逻辑。给代码是答复者的选择。 “可能的答案太多了......”?真?请UPVOTE这个问题,它值得!! !!恕我直言 – cube

回答

7

是否只有一个元素丢失,其他元素肯定是不重复的?然后回想一下,计算0 + 1 + ... +(N-1)之和的公式是(N-1)* N/2,并且它与你的数组中的和的差值是(N-2)缺少的元素:

function getMissingElement(array) { 
    var sum = 0; 
    var N = array.length + 1; 
    for(i = 0; i < N-1; ++i) { 
    sum += array[i]; 
    } 
    return (N-1)*N/2 - sum; 
} 
+1

优雅的方法,+1 – Christophe

+0

+1好主意。它可以简化一点,但:var n = array.length,for(var i = 0; i Oriol

+0

这是例外。在其他解决方案中稍加修改就帮助了我。 –

0
function getMissingElement(myArray) { 
    myArray.sort(); 
    myAray.reverse() 

    for(var i = 1; i < myArray.length; i++) { 
     if(myArray[i] - myArray[i-1] != 1) { 
      //log your numbers or print them or whatever you like 
     } 
    } 
} 

这是假定“缺失项目”的最基本定义,其中缺失项目位于两侧现有值之间。

0

这里有办法做到这一点:

arr.sort(function(x, y){return x - y}) 
    .map(function(x, i, me){return me[i+1]-x > 1 && x+1}) 
    .filter(Number) 

这会给你丢失号码的阵列,用于[0,2,4]它会给你[1,3]

相关问题