我正在尝试以下代码,但似乎无法正常工作。
这些是我的测试:
2,1,3,5,3,2
2,4,3,5,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;
}
答案 0 :(得分:0)
您可以创建一个空的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]))
答案 1 :(得分:0)
您可以将值作为键的对象作为对象,并检查该值是否曾被查看过。
function getFirstDuplicate(array) {
var seen = Object.create(null),
i = 0,
value;
for (i = 0; i < array.length; i++) {
value = array[i];
if (seen[value]) return value;
seen[value] = true;
}
return -1;
}
console.log(getFirstDuplicate([1, 7, 3, 5, 4, 2, 9, 3]));
console.log(getFirstDuplicate([1, 7, 3, 5, 4, 2, 9, 6]));
答案 2 :(得分:0)
我们只是在遍历数组时将内容推入对象。第一次出现时,我们将其设置为true,如果找到true,则知道我们找到了第一个重复项。
(25.0 / 24.0).floor # => 1
(-25.0 / 24.0).floor # => -2