第一种解决办法:
先对nums排序,相等的值下标一定是相邻的,故只需判断相邻下标的值是否相等即可
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
//nums长度
int length = nums.size();
//对nums进行排序
sort(nums.begin(),nums.end());
//遍历nums,相等的值下标一定相邻
for(int i = 0; i < length-1; i++){
if(nums[i] == nums[i+1]){
return true;
}
}
return false;
}
};
第二种方法:
使用哈希表。对于数组中每个元素,我们将它插入到哈希表中。如果插入一个元素时发现该元素已经存在于哈希表中,则说明存在重复的元素。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> s;
for(int num : nums){
//如果发现num的下标不等于结尾下标则说明num已存在于哈希表中
if(s.find(num) != s.end()){
return true;
}
//将num插入哈希表中
s.insert(num);
}
return false;
}
};