LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)

117 阅读1分钟

题号:剑指 Offer 03. 数组中重复的数字

        在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

划重点:只需要找到一个重复值即可满足题意

示例 1:

输入:
[2, 3, 1, 0, 2, 5, 3]
输出: 23 

 解题思路:

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】

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)