在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1
数据范围:
进阶:时间复杂度
,空间复杂度%5C)
[2,3,1,0,2,5,3]
2
2或3都是对的
function duplicate( numbers ) {
// write code here
if(numbers.length == 0) return -1
const map = new Map()
for(let i=0;i<numbers.length;i++){
if(map.has(numbers[i])){
map.set(numbers[i], map.get(numbers[i])+1)
}else{
map.set(numbers[i],1)
}
}
for(let item of map){
if(item[1] > 1){
return item[0]
}
}
}
module.exports = {
duplicate : duplicate
}; function duplicate( numbers ) {
// write code here
let result = -1;
let set = new Set();
let flag = true;
let length = numbers.length;
numbers.forEach((v, k) => {
if(v >= length) return -1;
if(flag && set.has(v)) {
flag = false;
result = v;
} else {
set.add(v);
}
});
return result;
}
module.exports = {
duplicate : duplicate
}; function duplicate( numbers ) {
let arr = [];
let sort = numbers.sort((a,b) => a-b);
for(let i = 0; i < sort.length;i++){
if(sort[i]==sort[i+1]){
arr.push(sort[i]);
}
}
let result = Array.from(new Set(arr));
if(result.length===0){
return -1
}
let random = Math.random()*(result.length)
return result[Math.floor(random)]
} function duplicate( numbers ) {
// write code here
const count = {}
for(const item of numbers){
if(count[item]){
return item
}else{
count[item] = 1
}
}
return -1
}
function duplicate( numbers ) {
// write code here
var obj = {};
for(var i = 0;i <numbers.length;i++){
if(obj[numbers[i]]){
return numbers[i];
}
obj[numbers[i]] = 1;
}
return -1;
}
module.exports = {
duplicate : duplicate
}; 2、用Map来做 function duplicate( numbers ) {
// write code here
var map= new Map();
for(let key of numbers){
if(map.has(key)){
return key;
}
map.set(key,1);
}
return -1;
}
module.exports = {
duplicate : duplicate
};