题号:剑指 Offer 03. 数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
划重点:只需要找到一个重复值即可满足题意
示例 1:
输入: [2, 3, 1, 0, 2, 5, 3] 输出: 2 或 3
解题思路:
1、暴力破解:双循环挨个挨个寻找,有没有重复值,有直接return即可
2、排序法:先使用sort排序,再遍历查找
3、map存法:遍历往map中存,每次存先判断是否存在相同的key,存在即return
//超出时间限制 func findRepeatNumber(nums []int) int { //1、双遍历,找重复值 for i := 0; i < len(nums); i++ { for j := i + 1; j < len(nums); j++ { if nums[i] == nums[j] { return nums[i] } } } return -1 }
func findRepeatNumber(nums []int) int { //先排序 sort.Ints(nums) for i:=1;i<len(nums);i++{ if nums[i] == nums[i-1]{ return nums[i] } } return -1 }
//3、存map func findRepeatNumber(nums []int) int { var mapV = make(map[int]int) for i := 0; i < len(nums); i++ { _,ok:=mapV[nums[i]] if ok { return nums[i] }else{ mapV[nums[i]] = 1 } } return -1 }
往期回顾:
【1】LeetCode-169. 多数元素(Goland实现)
【2】LeetCode-283. 移动零(Goland实现)
【3】LeetCode-38. 外观数列(Goland实现)