我正在尝试以下代码,但似乎无法正常工作。
这些是我的测试:
输入= 2,1,3,5,3,2
预期输出= 3;
输入= 2,4,3,5,1
预期输出= -1
输入= 2,4,3,5,1,7
这是代码
function FirstDuplicate(array) {
var a = [5, 2, 3, 4, 2, 6, 7, 1, 2, 3];
var firstDuplicate = "";
for (var i = 0; i < a.length; i++) {
for (var b = i + 1; b < a.length; b++) {
if (a[i] === a[b])
firstDuplicate = a.indexOf(a[i]);
break;
}
}
return firstDuplicate;
}
最佳答案
您可以创建一个空的Set
并继续添加已经传递给该Set
的元素。如果一个数字已经在Set
中,则return
function FirstDuplicate(array) {
let passed = new Set();
for(let x of array){
if(passed.has(x)) return x;
passed.add(x);
}
return -1;
}
console.log(FirstDuplicate([2,1,3,5,3,2]))
console.log(FirstDuplicate([2,4,3,5,1]))
console.log(FirstDuplicate([2,4,3,5,1,7]))
关于javascript - 给定一个具有从1到a.length的数字的数组,我如何找到第二个索引具有最小索引的第一个重复数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56953293/