给定每个小于数组大小的元素,在数组中查找第一个重复元素

最后发布: 2016-10-07 01:50:51


问题

输入: [3,4,6,1,3,5,4]

输入是具有重复项的未排序数组。 请注意,数组的每个元素都小于其大小7。

输出: 3,这是第一个重复元素。

我可以很好地使用地图来找出第一个重复元素,但是想知道是否存在更好的解决方案,因为所有数组元素都比数组小。

您能否在javascript中为这个问题提出最佳解决方案? 谢谢。

javascript algorithm data-structures
回答

最快的大概是

 var arr = [3,4,6,1,3,5,4]; var first, len=arr.length, i=0; for (i; i<len; i++) { if (arr.lastIndexOf(arr[i]) !== i) { first = arr[i]; break; } } console.log(first) 

最短的写作,像

 var arr = [3,4,6,1,3,5,4]; var first = arr.filter((k,i)=> i!== arr.lastIndexOf(k))[0]; console.log(first)