存在重复元素
概述:给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
输入:nums = [1,1,1,3,3,4,3,2,4,2]
方法一:Counter
思路:用 Counter 方法统计出现的次数,然后返回最大值进行判断即可。
def containsDuplicate(self, nums: List[int]) -> bool:
return max(collections.Counter(nums).values()) >= 2
方法二:字典
思路:和上面的思路一致,不同在于手写了一个字典来统计出现的次数。
def containsDuplicate(self, nums: List[int]) -> bool:
for i in range(len(nums)):
if nums[i] not in nums_dict:
return max(list(nums_dict.values())) >= 2
方法三:哈希表
思路:此算法是对字典的优化,因为并不需要对所有数组循环完,若遇到已经存在的,返回即可。
def containsDuplicate(self, nums: List[int]) -> bool:
for i in range(len(nums)):
if nums[i] not in nums_dict:
方法四:列表+排序
思路:首先对列表排序,然后循环判断,若下一个值与当前值相等,即可返回。
def containsDuplicate(self, nums: List[int]) -> bool:
方法五:set
思路:用 set 容器对数组处理,若与原数组长度不一致,返回即可。
def containsDuplicate(self, nums: List[int]) -> bool:
return len(nums) != len(set(nums))
总结
就这?...爷还手写了归并排序。我去他大爷的!