Golang面试考题记录 ━━ 存在重复 100.00%

===问:

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

输入: [1,2,3,1]
输出: true

示例 2:

输入: [1,2,3,4]
输出: false

示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

===答:

方法一:执行8.85%,内存94.32%
嵌套循环,发现重复的就退出。

func containsDuplicate1(nums []int) bool {
	for i, v := range nums {
		for j := i + 1; j < len(nums); j++ {
			if v == nums[j] {
				return true
			}
		}
	}
	return false
}

方法二:执行100.00%,内存50.00%
立牌坊~~,利用键名来找重复。
虽然这是一个常用的方法,但不得不承认,我受到以前php利用数组键名查重方式的影响更多些。

func containsDuplicate2(nums []int) bool {
	temp := make(map[int]int, len(nums))
	for _, v := range nums {
		if _, ok := temp[v]; ok {
			return true
		} else {
			temp[v] = 1
		}
	}
	return false
}

===注:

这题和前三题比,实在太入门,也再次验证了嵌套循环实在是影响执行效率。

扫描二维码关注公众号,回复: 10746865 查看本文章

另执行效率和内存占用的数据,每次的测试结果都有些变化,一般执行效率的结果波动比较大。

发布了44 篇原创文章 · 获赞 1 · 访问量 3595

猜你喜欢

转载自blog.csdn.net/snans/article/details/105171868