2014-07-16 55 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]

相關問題