题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1
示例
输入
[2,3,1,0,2,5,3]返回值
2说明
2或3都是对的
思路
直接使用map,遍历一遍数组,当第一次出现重复的值时,此时map值为1,直接返回得到答案
代码
function duplicate(numbers) {
if(numbers.length<=1) return -1;
// write code here
let map={};
for(let i = 0;i<numbers.length;i++){
if(map[numbers[i]]==1) return numbers[i];
map[numbers[i]]=1;
}
return -1;
}
module.exports = {
duplicate : duplicate
};
运行环境:Javascript Node
运行时间:68ms
占用内存:8692KB