思路:
对于示例1:[1, 2 ,3, 1],1出现了2次,2出现了1次,3出现了1次,这种统计结果显示了有2个值一一对应。所以想到用Hash表来存。
1.创建Hash表有2种方式,一是数组,二是用自带函数。如果用数组来创建需要明确数组里有多少元素,所以这里用第二种,对应Python里的字典。
2.key存数组元素,value存对应元素出现的次数。
3.用指针从头到尾遍历。
4.读Hash表每个key的值,如果>1则返回True。
Python代码:
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
if len(nums) == 0:
return False
mapping = {}
for num in nums:
if num not in mapping:
mapping[num] = 1
else: # 扩展:这里是为了统计每个元素的次数,如果仅仅是本题这里就可以返回True
mapping[num] = mapping.get(num) + 1
for v in mapping.values():
if v > 1:
return True
return False