JS 剑指Offer(一) 数组中的重复数字
题目:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,
但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
分析:找出重复的元素即可,把已经出现的元素push进res里面保存
1 var res = [] 2 var findRepeatNumber = function(nums){ 3 const map = {}; 4 for(let i=0;i<nums.length;i++){ 5 let num = nums[i] 6 if(!map[num]){ 7 //如果某个元素没有在map中出现过 则给这个值在map中设置为true 8 map[num] = true 9 }else{ 10 //对于已经出现过的数字,直接返回 11 res.push(num) 12 } 13 } 14 return res 15 console.log(res) 16 }
思路:遍历哈希表
哈希表 结构是number-boolean boolean代表数字是否出现过 hash的结构
如果一个元素出现过两次以上,则入栈,打印所有的重复元素
浙公网安备 33010602011771号