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的结构

如果一个元素出现过两次以上,则入栈,打印所有的重复元素

posted @ 2020-03-30 15:09  前端攻城狮4536251  阅读(126)  评论(0)    收藏  举报