数组中重复的数字

题目描述:

在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入的长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

题目分析:

首先,我们可以从题目中得知数组长度为n为固定的,数据的范围也是固定的为0到n-1。因此我考虑用额外的数组来做辅助,记录数组中数字出现的次数,只要检测出某一个值出现的次数大于1,也就是重复了,返回这个值。代码如下:

代码:

 1 bool duplicate(int numbers[], int length, int* duplication) {
 2         int *cnt = new int[length];
 3         for(int i = 0;i<length;i++){
 4             cnt[i] = 0;
 5         }
 6         for(int i = 0;i < length;i++){
 7             ++cnt[numbers[i]];
 8             if(cnt[numbers[i]] >= 2){
 9                 *duplication = numbers[i];
10                 return true;
11             }
12         }
13         return false;
14     }
原文地址:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/13425029.html