我的办法将元素不断插入一个集合,对新元素如果集合中已存在,就返回true。(最初naive想法遍历一遍元素,对每个新元素看看该元素前面部分序列是否已存在该元素,但这样太慢了)
bool containsDuplicate(vector<int>& nums)
{
if(nums.size() <= 1)
return false;
set<int> s;
for (auto iter = nums.begin(); iter != nums.end(); ++iter)
{
if (s.find(*iter) != s.end())
return true;
s.insert(*iter);
}
return false;
}
看到其他有先排序然后找。
bool containsDuplicate(vector<int>& nums) {
int hi = nums.size();
if(hi == 0)
return false;
sort(nums.begin(), nums.end());
for(int loops = 0; loops < hi - 1;loops++)
if(nums[loops] == nums[loops+1])
return true;
return false;
}