Skip to main content

217.存在重复元素

标签: array, hash-table

难度: Easy

通过率: 62.52%

原题链接: https://leetcode.com/problems/contains-duplicate/description/

题目描述

给定一个整数数组 nums,如果数组中任何一个值在数组中出现至少两次,返回 true。如果数组中每个元素都不同,则返回 false。

解题思路

要解决这个问题,我们可以利用集合(set)的特性:集合中的元素是唯一的。具体来说,我们可以遍历数组,并将元素添加到集合中。在添加之前,请检查该元素是否已经存在于集合中。如果它已经存在,则说明存在重复元素,返回 true。否则,继续添加。如果遍历完所有元素都没有发现重复元素,则返回 false。使用集合的好处是查找元素的时间复杂度为常数级别。

代码实现

def containsDuplicate(nums):
# 创建一个空的集合来存储元素
seen = set()
# 遍历数组中的每个元素
for num in nums:
if num in seen: # 检查当前元素之前是否已经出现过
return True # 如果已出现,返回 True(有重复)
seen.add(num) # 如果没有出现,则将其加入集合
return False # 遍历结束后没有发现重复,返回 False

复杂度分析

时间复杂度为 O(n)O(n),其中 nn 是数组的长度,因为在最坏情况下,我们需要检查每一个元素并插入到集合中。每次插入集合和查找集合中的元素的操作都是 O(1)O(1) 的时间复杂度。

空间复杂度为 O(n)O(n),需要一个集合来储存数组中的元素以便查找重复项。