2013-08-20 83 views
0

我遇到了有關數組的問題,我似乎無法解決這個問題。我想要做的是返回號碼不在陣列內。 返回只能做如果新的值不是陣列裏面,否則它會增量值(以確保沒有空間)。返回一個與陣列中當前數字不同的新數字

我的代碼是這樣:

function create_number(number) { 
    var array = [1,2,3,6,7,8,9]; 
    for (var i=0;i<array.length;i++) { 
    if (array[i] == number) { 
     return number; 
    } else { 
     // create a new number that is not inside the array, and return it. 
    } 
    // If not just do the loop again. 
    // If the loop is over, then just create a valid number 
    // that is not found inside the array. 
    } 
} 
+0

有什麼條件? '100'是一個有效的數字? – elclanrs

+1

提供的代碼的結果是什麼? '4'?那麼'5',然後'10'? – zerkms

+0

是的,條件包括100,但試圖避免數字空間。這意味着4,5和10可能是有效的。 –

回答

3
var array = [1,2,3,6,7,8,9]; 
var number = 0; 
while (true) { 
    if (array.indexOf(++number) == -1) { 
     array.push(number); 
     return number; 
    } 
} 

,但你需要堅持array地方

PS:Array.prototype.indexOf墊片爲古老的瀏覽器(學分@Lochemage)

PPS:對上面的解決方案是O(N^2),只是爲了好玩,這裏是O(N)之一(它要求最初對array進行排序):

var array = [1,2,3,6,7,8,9]; 
var number = 1; 
while (true) { 
    if (array[number - 1] != number) { 
     array.splice(number - 1, 0, number); 
     return number; 
    } 
    ++number; 
} 
+1

注意:indexOf在所有瀏覽器上都不受支持。儘管你可以很容易地實現它。 – Lochemage

相關問題