===问:
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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
}
===注:
这题和前三题比,实在太入门,也再次验证了嵌套循环实在是影响执行效率。
另执行效率和内存占用的数据,每次的测试结果都有些变化,一般执行效率的结果波动比较大。