我有一个充满数字的数组。这是一个例子:
myArray = [0,1,2,4,5];
我需要找到从 1 开始的最小未使用数字,因此在本例中为 3。
我一直在阅读有关使用 indexOf
的信息,但我不确定如何将它用于我的特定目的。
最佳答案
假设数组未排序,您总是从 0 开始,并考虑到您希望在没有遗漏的情况下找到最大的数字:
var k = [6, 0, 1, 2, 4, 5];
k.sort(function(a, b) { return a-b; }); // To sort by numeric
var lowest = -1;
for (i = 0; i < k.length; ++i) {
if (k[i] != i) {
lowest = i;
break;
}
}
if (lowest == -1) {
lowest = k[k.length - 1] + 1;
}
console.log("Lowest = " + lowest);
记录答案 3。如果 3 也在那里,将记录 7,因为没有其他数字丢失。
如果您并不总是从零开始,请使用偏移量:
var k = [6, 2, 3, 4, 5];
k.sort(function(a, b) { return a-b; }); // To sort by numeric
var offset = k[0];
var lowest = -1;
for (i = 0; i < k.length; ++i) {
if (k[i] != offset) {
lowest = offset;
break;
}
++offset;
}
if (lowest == -1) {
lowest = k[k.length - 1] + 1;
}
console.log("Lowest = " + lowest);
记录答案 7,因为在开始序列的 2 之后没有遗漏任何答案。
关于javascript - 使用 Javascript 查找数组中最小未使用的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30672861/