LeetCode 217. 存在重复元素
方法一:排序
先排序,再找前后是否有一样的元素
class Solution {
public:
bool containsDuplicate(vector<int>& nums)
{
sort(nums.begin(), nums.end());
for(int i=1;i<nums.size();i++)
{
if(nums.at(i-1)==nums.at(i))
return 1;
}
return 0;
}
};
方法二:哈希表
用的是set的不重复特性,也即无论有多少重复的set都会给删成排好序的不重复序列。 全放到set里去,个数少了,那就是有重复的。 (时间、空间复杂度均很高,可能跟set的红黑树(?)有关系,换成unorder_set按官方题解做会好很多,没有深究)
class Solution {
public:
bool containsDuplicate(vector<int>& nums)
{
set<int> set1;
for(int i=0;i<nums.size();i++)
{
set1.insert(nums.at(i));
}
if(set1.size()!=nums.size())return 1;
else return 0;
}
};
下一篇:
手撕数据结构与算法-数组
