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;
    }
};
经验分享 程序员 微信小程序 职场和发展