方法一:(但可能会超出时间限制)
一、思路
双指针
建立两次循环(前一个元素和后一个元素),找出重复项 。
二、code
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n - 1; ++i) {
for (int j = i + 1; j < n; ++j) {
if (nums[i] == nums[j]) {
return true;
}
}
}
return false;
}
};
方法二:
一、思路
哈希表
要正确地检查向量 nums
中是否存在重复元素,一种常见的方法是使用哈希表(或集合)来记录已经遍历过的元素。在遍历过程中,如果遇到已经存在于哈希表中的元素,则表示存在重复。
使用了 unordered_set
(无序集合)来记录已经遍历过的元素。在遍历过程中,我们检查当前元素 num
是否已经存在于集合 seen
中。如果存在,则表示存在重复元素,返回 true
。如果不存在,则将 num
插入到集合 seen
中,并继续遍历下一个元素。
二、code
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> seen;//std::unordered_set 是使用哈希表实现的集合容器
for (int num:nums)
{
if (seen.count(num)>0)//std::unordered_set::count() 函数用于返回集合中指定元素的个数。
//seen.count(num) 返回元素 num 在集合 seen 中的个数。如果元素存在,则 返回 1(个数大于 0),表示集合中已经存在该元素。如果元素不存在,则返回 0(个数等于 0)。
{
return true;
}
seen.insert(num);
}
return false;
}
};
==================================================================
三、学习到的知识:
可利用哈希表查找元素重复项。
在 C++ 的标准库中,std::unordered_set
是使用哈希表实现的集合容器。std::unordered_set::count()
函数用于返回集合中指定元素的个数。