数组中重复的数字

题目描述

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
#include <iostream>
#include <cstring>  //memset()
#include <cstdlib>  // calloc
using namespace std;
// 思路 对数组进行遍历,将数组的值作为另一个数组得下标,
//该下标对应的值加1,并赋值给一个变量
//当这个变量的值大于1时就是要的结果
class Solution {
public:

    bool duplicate(int numbers[], int length, int* duplication) {

        if (length <= 0 || numbers == NULL)
            return false;
//       int arr2[length+1];
//       for(int i = 0; i < length+1; i++)
//            arr2[i] = 0;
       int *arr2 = (int *)calloc(length, sizeof(int));
       int temp = 0;
       for(int i = 0; i < length; i++)
       {
           arr2[numbers[i]]++;
           temp = arr2[numbers[i]];
           if (temp > 1)
           {
               *duplication = numbers[i];
               break;
           }
       }
       if (temp > 1)
        return true;
       else
        return false;
    }
};
int main(void)
{
    Solution s;
    int length = 5;
    int duplication;
    int numbers[length] = {2,4,2,1,4};
    bool falg = s.duplicate(numbers,length, &duplication);
    cout << duplication;

    return 0;
}
原文地址:https://www.cnblogs.com/xiaokang01/p/12380223.html