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