我正在尝试以下代码,但似乎无法正常工作。
这些是我的测试:


输入= 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/

10-12 15:24