剑指offer03找出重复的数字

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
/** * 思路一: * 使用set,因为set自动忽略重复元素,遍历数组中元素,若长度未增加,则输出当前元素 / var findRepeatNumber = function(nums) { const s = new Set(); for(let i of nums){ let curLenth=s.size; s.add(i); if(s.size==curLenth) return i; } }; /* * 思路二: * 使用哈希表 * 哈希表的结构是:number-boolean,number 就是数组中的数字,boolean 代表数字是否出现过。 * 整体的流程是:遍历数组中的数字,检查是否出现过,如果出现过,那么返回此数字。 / var findRepeatNumber = function(nums) { const map = {}; for (const num of nums) { if (!map[num]) { map[num] = true; continue; } return num; } }; /* * 思路三: * 无脑双 for / var findRepeatNumber = function(nums) { for(let i=0;i<nums.length-1;i++){ for(let j=i+1;j<nums.length;j++){ if(nums[i]==nums[j]) return nums[i]; } } return null; }; /* * 思路四: * 先排序,相邻相同就返回 */ var findRepeatNumber = function(nums) { nums.sort(); for(let i=0;i<nums.length;){ if(nums[i++] == nums[i]) return nums[i]; } return null;

全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务