2015-10-07 59 views
0

一個編碼問題要求在零索引數組A中找到丟失的數字,該數組由N個不同的整數組成。Javascript中的「PermMissingElem」解決方案

E.g.

Arr[0] = 2 
    Arr[1] = 3 
    Arr[2] = 1 
    Arr[3] = 4 
    Arr[4] = 6 

我先前提交的第一排序陣列,然後執行一個foreach函數返回值1,其中元件之間的陣列差大於1的溶液,然而,這並沒有得到的100點。

有沒有辦法改善這一點?

回答

3

使用該功能獲取正確性和性能100

function solution(A) { 
    // write your code in JavaScript (Node.js 4.0.0) 
    var size = A.length; 
    var sum = (size + 1) * (size + 2)/2; 
    for (i = 0; i < size; i++) { 
     sum -= A[i]; 
    } 
    return sum; 
} 
+0

複製很容易,你能解釋一下爲什麼這是一個更好的解決方案。 –

0

嘗試利用Math.minMath.maxwhile

var Arr = []; 
 

 
Arr[0] = 2 
 
Arr[1] = 3 
 
Arr[2] = 1 
 
Arr[3] = 4 
 
Arr[4] = 6 
 

 
var min = Math.min.apply(Math, Arr), 
 
    max = Math.max.apply(Math, Arr), 
 
    n = max - 1; 
 

 
while (n > min) { 
 

 
    if (Arr.indexOf(n) === -1) { 
 
    console.log(n); 
 
    break; 
 
    } 
 

 
    --n; 
 

 
}

-1

我與我的代碼相同的問題:

function solution(A) { 
    var i, next; 

    A.sort(); 

    next = 1; 
    for (i=0; i<A.length; i++){ 
     if (A[i] != next) return next; 
     next++; 
    } 

    return next; 
} 

儘管它的正確性得分爲100%,但它在所有性能測試中都返回了錯誤的答案。

C語言中的相同代碼接收100%兩個:

int cmpfunc (const void * a, const void * b){ 
    return (*(int*)a - *(int*)b); 
} 

int solution(int a[], int n) { 
    int i, next; 

    qsort(a, n, sizeof(int), cmpfunc); 

    next = 1; 
    for (i=0; i<n; i++){ 
     if (a[i] != next) return next; 
     next++; 
    } 

    return next; 
} 
+0

更改A.sort();對於A = A.sort(function(a,b){return a - b;});你會有100% – MarBVI