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.
很简单的题,就是看看数组中有没有重复的,有的话就返回true,没有的话返回false,空的话也是false。
首先可以考虑用hash table来做,元素做key,出现的次数做value,记录出现的次数。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_map<int,int> Num;//用来统计数字出现的次数
for(int n : nums) {
if(++Num[n] > 1) {
return true;
}
}
return false;
}
};
也可以用排序来说,将数组进行排序,如果有重复的话,当前元素和下一个元素是相等的。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
if(nums.empty()) {
return false;
}
sort(nums.begin(),nums.end());//将其排序
for(int i=0; i < nums.size()-1; i ++) {
if(nums[i] == nums[i+1]) {//如果出现两个元素相等的话,就返回true
return true;
}
}
return false;
}
};