# 数组中重复的数字/寻找重复数/存在重复元素 --- ```javascript= 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 ``` :::success ```go= /* 利用map的特性,key的唯一性。 */ func findRepeatNumber(nums []int) int { maps := make(map[int]int, 0) result := make([]int, 0) resp := -1 for i := 0; i < len(nums); i++ { value, ok := maps[nums[i]] if !ok { maps[nums[i]] = i } else { resp = nums[value] break } } if len(result) == 0 { return resp } return resp } // 有序数组比较 func findRepeatNumber(nums []int) int { if len(nums) <= 1 { return -1 } sort.Ints(nums) // 数组已经有序,只要跟自己的下一个比较就能找到重复元素 result := nums[0] // 初始比较值 for i := 1; i < len(nums); { if isEqual(result, nums[i]) { // 找到重复元素即终止查找 break } result = nums[i] // 新的比较值 i++ // 与数组的下一个元素开始比较 } return result } func isEqual(a, b int) bool { return a == b } // TODO 快慢指针,二进制解法,二分法 ``` ::: ###### tags: `LeeCode`