![image-20201202135946680](https://tva1.sinaimg.cn/large/0081Kckwgy1gl9h2g5ds1j30xd0u0tc7.jpg)
思路
首先,要确定一个元素是否出现多次,那么肯定O(n)的复杂度是少不了的,因为肯定需要一次遍历.
一次遍历的话,还需要记住每个数字出现的次数,所以可以考虑用hash表记录数字出现的数字。
看了题解也没有更好的解法了,暴力法更是O(n²)的复杂度,还有一种排序后遍历,复杂度也很高。
golang解法
func containsDuplicate(nums []int) bool {
hash := make(map[int]int)
for _, n := range nums {
hash[n] += 1
if hash[n] > 1 {
return true
}
}
return false
}
![image-20201202140410924](https://tva1.sinaimg.cn/large/0081Kckwgy1gl9h6k6zfrj30yi0em3zy.jpg)
Python解法 set
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
return not len(nums) == len(set(nums))
![image-20201202140542147](https://tva1.sinaimg.cn/large/0081Kckwgy1gl9h857okjj30yk0ee75t.jpg)
Python hash表
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
mp = dict()
for n in nums:
mp[n] = mp.get(n, 0) + 1
if mp[n] > 1:
return True
return False
![image-20201202140749718](https://tva1.sinaimg.cn/large/0081Kckwgy1gl9hacvjaxj30y20egta7.jpg)