在javascript对象数组中找到缺少的元素?

时间:2014-07-16 22:12:50

标签: javascript algorithm

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

3 个答案:

答案 0 :(得分:7)

是否只缺少一个元素,其他元素肯定不会重复?

然后回想一下计算0 + 1 + ... +(N-1)之和的公式是(N-1)* 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 :(得分: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
       }
   }
}

这是假定“缺失项目”的最基本定义,其中缺少的项目位于任何一方的现有值之间。

答案 2 :(得分: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]