javascript - 给定一个数字从 1 到 a.length 的数组,我如何找到第二次出现的索引最小的第一个重复数字?
问题描述
我正在尝试以下代码,但它似乎无法正常工作。
这些是我的测试:
- 输入 =
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 - 折叠手风琴时,边框会在这段时间内消失,当手风琴折叠时边框如何可见?
- c# - 使用依赖注入时如何通过两种不同类型访问实例
- javascript - 尝试通过 PixiJS 获得动画效果,但它没有显示任何内容
- html - 白色背景的动画不起作用
- python - O(log n) 时间复杂度
- c# - ElasticBeanstalk 更改文件
- android - “支持即时应用”是什么意思?如果我检查它会发生什么
- javascript - 如何在 AWS S3 中上传 Image Buffer 数据?
- android - 如何从 android app bundle 的 apk 列表中确定正确的 apk
- javascript - Webpack:限制动态导入的块文件