给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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
方法一:
将nums排序,通过set转换为集合后再转换为列表并排序,前者和后者相等,则无重复元素
def containsDuplicate( nums): """ :type nums: List[int] :rtype: bool """ nums.sort() print(nums) if nums==[]: return False s = list(set(nums)) s.sort() # 排序后再作比较 print(s) if s == nums: return False else: return True
改进:
只需将转换后的集合和原列表长度相比较即可,若长度相等则没有重复元素
def containsDuplicate2( nums): """ :type nums: List[int] :rtype: bool """ if len(set(nums))==len(nums): return False else: return True
方法三:
利用python collections库中的Counter计数实现
import collections def containsDuplicate3(nums): dic=collections.Counter(nums) # collections的Counter类可实现对每个元素的计数功能,返回的是字典,key是元素,value是其出现的次数 # Counter({5: 2, 1: 1, -2: 1, -4: 1, 0: 1}) print(dic) for value in dic.values(): if value>=2: return True return False
注:
Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。