Method 1
先对整个数组进行排序,然后从前往后开始遍历,判断前一个数 是否跟相邻的数相等
AC Code
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
int front = nums[0];
for( int i = 1; i < nums.size(); i++){
if(nums[i] == front) return true;
front = nums[i];
}
return false;
}
};
时间复杂度较高
Method 2
利用哈希表,直接遍历数组,将遍历的数存到哈希表中,每次存储之前判断该数是否在哈希表中已存在
AC Code
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> hashSet;
for(int i : nums){
if(hashSet.find(i) != hashSet.end()) return true;
hashSet.insert(i);
}
return false;
}
};