0
点赞
收藏
分享

微信扫一扫

03.数组中的重复数字

佛贝鲁先生 2022-05-03 阅读 93

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

class Solution {
 public:
 //排序遍历
  int findRepeatNumber(vector<int>& nums) {
    int n = nums.size();
    sort(nums.begin(), nums.end());
    for (int i = 0; i < n - 1; i++) {
      if (nums[i + 1] == nums[i]) return nums[i];
    }
    return 0;
  }

//hash
  int findRepeatNumber(vector<int>& nums) {
    int n = nums.size();
    map<int, int> mp;
    for (int i = 0; i < n; i++) {
      mp[nums[i]]++;
    }
    for (auto it = mp.begin(); it != mp.end(); it++) {
      if ((it->second) > 1) return it->first;
    }
    return 0;
  }

//简化版
  int findRepeatNumber(vector<int>& nums) {
    int n = nums.size();
    map<int, int> mp;
    for (int i = 0; i < n; i++) {
      mp[nums[i]]++;
      if(mp[nums[i]]>1)return nums[i];
    }
    return 0;
  }


};
举报

相关推荐

0 条评论