返回一个与数组中当前数字不同的新数字

时间:2013-08-20 23:37:29

标签: javascript arrays arraylist

我有关于我似乎无法解决的数组的问题。我要做的是返回数字不在数组内部。 返回只能如果新值不在数组内,否则它将增加值(以确保 >没有空间)。

我的代码如下:

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.
  }
}

1 个答案:

答案 0 :(得分: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;
}