217.存在重复元素
题目描述
给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例 1:
输入:nums = [1,2,3,1]
输出:true
解释:元素 1 在下标 0 和 3 出现。
示例 2:
输入:nums = [1,2,3,4]
输出:false
解释:所有元素都不同。
示例 3:
输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true
代码
1.常规方法
class Solution {
public:
bool containsDuplicate(vector<int>& nums)
{
int len = nums.size()-1;
if(len <= 0)
{
return false;
}
for(int i = 0; i < len ; i++)
{
for(int j = i+1; j<=len ; j++)
{
if(nums[i]==nums[j]) //判断是否存在重复元素
{
return true;
}
}
}
return false;
}
};
常规方法的弊端:程序运行的时间过长,复杂度O(n^2).
2.哈希表法
class Solution {
public:
bool containsDuplicate(vector<int>& nums)
{
unordered_set<int> seen;
for(int num : nums)
{
if(seen.find(num) != seen.end())
{
return true;
}
seen.insert(num);
}
return false;
}
};

浙公网安备 33010602011771号