1. 问题描述:
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate
2. 思路分析:
分析题目可以知道我们需要记录数组中元素出现的次数,所以这是一个计数问题,使用哈希表计数即可,不同语言哈希表的表示是不一样的,c++中可以使用unordered_map,java中可以使用HashMap,对于python语言则可以使用collections.defaultdict(int)或者是{}声明一个字典来计数,先判断当前元素在哈希表中是否存在如果存在说明存在重复元素返回True否则将元素存到哈希表中,循环结束之后说明没有重复元素返回False。
3. 代码如下:
from typing import List
import collections
class Solution:
# 使用哈希表计数即可
def containsDuplicate(self, nums: List[int]) -> bool:
dic = collections.defaultdict(int)
for i in range(len(nums)):
if dic[nums[i]] > 0: return True
dic[nums[i]] += 1
return False