题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。
1 class Solution { 2 public: 3 // Parameters: 4 // numbers: an array of integers 5 // length: the length of array numbers 6 // duplication: (Output) the duplicated number in the array number 7 // Return value: true if the input is valid, and there are some duplications in the array number 8 // otherwise false 9 bool duplicate(int numbers[], int length, int* duplication) {10 if(length < 2)11 return 0;12 mapmm;13 for (int i = 0; i< length ; ++i)14 {15 if (mm.count(numbers[i])==0)16 {17 mm[numbers[i]] = 1;18 }19 else20 {21 ++mm[numbers[i]];22 }23 }24 25 for(map ::iterator it = mm.begin() ;it != mm.end() ; ++it)26 {27 if (it->second > 1)28 {29 * duplication = it->first;30 return 1;31 }32 }33 return 0;34 }35 };