day16-哈希表练习题力扣217

day16-哈希表练习题力扣217_第1张图片
思路:
对于示例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

你可能感兴趣的:(散列表,leetcode,哈希算法)