【数组】 217. 存在重复元素-哈希 | 集合去重 | 排序比较前后元素

题目:

 

 

解答:

方法一:哈希,判断value值是否大于1

 1 class Solution {
 2 public:
 3     bool containsDuplicate(vector<int>& nums) {
 4 
 5         unordered_map <int,int>mp;
 6         for(int i:nums)
 7         {
 8             mp[i]++;  //i对应的value值++
 9 
10             if(mp[i]>1) //i对应的value值大于1,则说明存在重复元素
11                 return true;
12         }
13         return false;
14     }
15 };

 

方法二:利用集合,与原数组比较大小

1 class Solution {
2 public:
3     bool containsDuplicate(vector<int>& nums) {
4 
5         unordered_set <int> st (nums.begin(),nums.end());
6         return nums.size() > st.size();//如果原数组的大小大于集合的大小,则说明存在重复元素
7     }
8 };

 

方法三:排序,比较前后两个元素是否相等,来判断是否存在重复元素。

 1 class Solution {
 2 public:
 3     bool containsDuplicate(vector<int>& nums) {
 4 
 5        sort(nums.begin(),nums.end());
 6         for(int i=1;i<nums.size();i++)
 7         {
 8             if(nums[i]==nums[i-1])
 9                 return true;
10         } 
11         return false;
12     }
13 };

 

posted @ 2020-05-04 16:55  梦醒潇湘  阅读(202)  评论(0)    收藏  举报