Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
方法一:利用sort进行排序
bool containsDuplicate1(vector<int>& nums) {
sort(nums.begin(), nums.end());
for (int i=0; i<int(nums.size())-1; i++) {
if (nums[i]==nums[i+1])
return true;
}
return false;
}
方法二:利用set的find函数
bool containsDuplicate4(vector<int>& nums) {
set<int> mySet;
for (auto& num: nums) {
if (mySet.find(num) != mySet.end())
return true;
mySet.insert(num);
}
return false;
}
方法三:只用一行解决问题,利用set不允许元素重复,multiset允许元素重复
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
return nums.size() > set<int>(nums.begin(), nums.end()).size();
}
};