寻找数组中的重复元素

寻找数组中的重复元素,数组长度为n,其中的元素范围在0~n-1之间。

思路:
方法①:将数组排序,若相邻位置元素重复,则返回。时间复杂度O(nlogn),空间复杂度O(logn).

class Solution
{
  public:
     int findRepeatNums(vector<int>& nums)
     {
       if(nums.size()==0) return -1;
       sort(nums.begin(),nums.end());
       for(int i=0;i!=nums.size();i++)
       {
         if(nums[i]==nums[i+1])
         {
           return nums[i];
         }
       }
       return -1;
     }
}   

方法②:暴力法,每个元素找出在后面是否有重复元素。时间复杂度O(n^2),空间复杂度O(1)。
方法③:哈希表。时间复杂度O(n),空间复杂度O(n)。

class Solution
{
  public:
    int findRepeatNums(vector<int>& nums)
    {
      if(nums.size()==0) return -1;
      unordered_map<int,int> m;
      for(int i=0;i!=nums.size();i++)
      {
        if(++m[nums[i]]>1) return nums[i];
      }
      return -1;
    }
}
发布了22 篇原创文章 · 获赞 1 · 访问量 348

猜你喜欢

转载自blog.csdn.net/weixin_43086349/article/details/104640729