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; } };
下一篇:
手撕数据结构与算法-数组