leetcode-03. 数组中重复的数字刷题笔记(c++)

写在前面

  • 难度:简单
  • unordered_map 或 sort排序
    • 大数组方法异常溢出,,,
  • 数据量
    • 小数据量,数组元素作为下标
    • 大数据量
      • 无需map映射(耗费空间)
      • sort排序,前后元素是否等值

题目详情

找出数组中重复的数字。


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

示例 1:

输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3 

限制:

2 <= n <= 100000

ac代码

  • unordered_map映射
class Solution
{
public:
      int findRepeatNumber(vector<int>& nums)
    {
        unordered_map<int,int> umap;
        for(int i=0; i<nums.size(); i++)
        {
            if(umap.find(nums[i]) != umap.end())
                return nums[i];
            umap.insert({nums[i],1});
        }
        return -1;
    }
};
  • sort排序
class Solution {
public:
  int findRepeatNumber(vector<int>& nums) {
    sort(nums.begin(),nums.end());
    for(int i=0;i<nums.size()-1;i++){
      if(nums[i]==nums[i+1])
      return nums[i];
    }
    return -1;

  }
};
  • 参考文章
    • 【剑指offer】算法题03.数组中重复的数字(C++)

你可能感兴趣的:(leetcode)