题目描述
给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true
。如果数组中每个元素都不相同,则返回 false
。
1.哈希,判断key值是否大于1
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_map <int,int>mp;
for(int i:nums)
{
mp[i]++; //i对应的value值++
if(mp[i]>1) //i对应的value值大于1,则说明存在重复元素
return true;
}
return false;
}
};
2.利用集合,与原数组比较大小
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set <int> st (nums.begin(),nums.end());
return nums.size() > st.size();
}
};
3.排序
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
for(int i=1;i<nums.size();i++)
{
if(nums[i]==nums[i-1])
return true;
}
return false;
}
};