在一个长度为 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实现)
❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ
❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~
❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】
❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)