提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、哈希表
将数组中的元素插入哈希表中。如果该元素已经在哈希表中,就说明该元素重复,返回true。
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
std::unordered_set<int> set; //创建一个哈希表
for(int x : nums)
{
if(set.find(x) != set.end())
{
return true; //在哈希表中找到该元素,说明有重复,返回true
}
set.insert(x); //在哈希表中未找到该元素,将该元素插入哈希表中
}
return false; //遍历完整个vector后都没有找到重复的元素,因此返回false
}
};
二、排序
- 对nums进行排序;
- 用后向减前项,如果差值为0则说明有重复。遍历结束后都没有差值为0,说明没有重复元素,返回false;
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end()); //排序
for(int i = 0; i < nums.size()-1; i++) //后项-前向,因此判决条件是nums.size()-1
{
if(nums[i+1] - nums[i] == 0)
{
return true;
}
}
return false;
}
};