![63e9f30954727d744ffb4051155a7dfb.png](https://i-blog.csdnimg.cn/blog_migrate/54fd4f3bea34e0f623eb0e12039c5616.png)
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]输出:2 或 3
温故而知新 写给自己
思路整理
第一种方法:
1.先给数组排序 使用sort包中的ints。
2.获取数组中第一个值为默认值lastNum。
3. 使用for range 循环 来与后一个值作比较 相同即为重复数字。
4.如果不相同将把当前的值复制给默认值lastNum。
func findRepeatNumber(nums []int) int {
sort.Ints(nums)
lastNum :=nums[0]
for _,v :=range nums[1:]{
if lastNum==v {
//return lastNum
break
}else{
lastNum=v
}
}
return lastNum
}
总结:
1.数组中是可以使用下标取值的,切片不能。
2.sort包用法。
第二种方法:
1.建立一个map字典。
2.将遍历过的元素存入map中。
3.在存入之前判断该元素是否存在。
4.存在返回即可。
func findRepeatNumber(nums []int) int {
numMap :=make(map[int]bool) //创建一个键为int 值为bool类型的map 并进行初始化
for _,v := range nums{
if numMap[v] {
return v
}else{
numMap[v]=true
}
}
return -1
}
总结:
1.使用map需要先make。