给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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
思路1:
使用Python自带set函数将列表转化成集合以去重,若此集合的长度相比原来不变,则说明没有重复元素,反之则有。
代码1:
class Solution:
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
return False if len(set(nums))==len(nums) else True
分析1:
时间复杂度O(n),空间复杂度O(0)
思路2:
导入Python模块函数collections.Counter统计每个元素出现的个数。也可以不导入模块直接建立字典统计。
代码2:
class Solution:
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
from collections import Counter
nums_counter=Counter(nums)
for i in nums_counter.values():
if i>1:
return True
return False
分析2:
时间复杂度O(n),空间复杂度O(n)
思路3:
先对列表进行排序,之后检查每个元素的后一个元素是否与当前元素相同。
代码3:
class Solution:
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
nums.sort()
for i in range(len(nums)-1):
if nums[i]==nums[i+1]:
return True
return False
分析3:
时间复杂度O(nlogn),空间复杂度O(0)