我有关于我似乎无法解决的数组的问题。我要做的是返回数字不在数组内部。 返回只能如果新值不在数组内,否则它将增加值(以确保 >没有空间)。
我的代码如下:
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 :(得分: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;
}