数组中重复的数字
数组中重复的数字
题目:
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例:
输入:[2, 3, 1, 0, 2, 5, 3],
输出:2 或 3
解法一:通过中间数组,遍历原数组,如果中间数组中没有原数组中的值,则将其放到中间数组,有原数组的值,则停止循环,输出重复值
var findRepeatNumber = function(nums) { let hash = [] , repeatItem = undefined for (let i = 0; i < nums.length; i++) { if (!hash.includes(nums[i])) { hash.push(nums[i]) } else { repeatItem = nums[i] break } } return repeatItem };
解法二:
var findRepeatNumber = function (nums) { const s = new Set() let result = undefined if (nums.length > 0) { s.add(nums[0]) } for (let i = 1; i < nums.length; i++) { if (s.has(nums[i])) { result = nums[i] break } else { s.add(nums[i]) } } return result }
解法三:这种方式在数组长度较小,但是数组中的某一项值很大的时候会导致越界,但是正常情况下是性能最好的,不推荐
var findRepeatNumber = function (nums) { let temp = undefined for (let i = 0; i < nums.length; i++) { while (nums[i] != i) { if (nums[i] == nums[nums[i]]) { return nums[i] } temp = nums[i] nums[i] = nums[temp] nums[temp] = temp } } return -1 }
本文来自博客园,作者:前端加油站,转载请注明原文链接:https://www.cnblogs.com/bllx/p/15927947.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构