题目
存在重复元素:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 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
题目分析
此题有三种解法:
- 通过python的set数据结构将nums转化为集合,集合会自动去重,那么是否有重复元素,就取决于集合的长度和原来数组的长度是否相等了,不相等则表示有重复。
- 通过在遍历元素时使用hash表,将hash表中没有的元素放入hash表,下次再遍历到该元素,hash表已有该元素,则可判断重复。
- 将数组进行排序,如果有重复的元素,则这些元素必定相邻,所以判断排序后的相邻元素是否相等即可。
代码
集合法
def containsDuplicate(nums):
return len(nums) != len(set(nums))
nums = [1,1,2,2]
containsDuplicate(nums)
hash表法
def containsDuplicate(nums):
d = {}
for i in nums:
if d.get(i):
return True
d[i] = 1
return False
nums = [1,2,3,4]
containsDuplicate(nums)
排序法
# 排序后,若有重复元素,则重复元素必定相邻
def containsDuplicate(nums):
nums.sort()
for i in range(len(nums)-1):
if nums[i] == nums[i+1]:
return True
return False
nums = [1,2,1,4]
containsDuplicate(nums)