在一个长度为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都是对的
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 };