给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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
//思路:使用C++中STL,find()函数
//时间:1676 ms
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
if(nums.size() <= 1) return false;
for(vector<int>::iterator it = nums.begin();it != nums.end();++it)
if(find(it + 1,nums.end(),*it) != nums.end())
return true;
return false;
}
};
//思路:先对数组进行排序,然后比较相邻两个数即可
//时间:24 ms
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
if(nums.size() <= 1) return false;
sort(nums.begin(),nums.end());
for(int i = 0;i < nums.size();++i)
if(nums[i] == nums[i+1])
return true;
return false;
}
};
// 依旧是使用STL中的hash表来实现,只不过是使用count来解决
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> array;
for (auto i : nums) {
if(array.count(i)) return true;
else array.insert(i);
}
return false;
}
};