classSolution { public: // Parameters: // numbers: an array of integers // length: the length of array numbers // duplication: (Output) the duplicated number in the array number // Return value: true if the input is valid, and there are some duplications in the array number // otherwise false boolduplicate(int numbers[], int length, int* duplication){ if(numbers==NULL || length<=0) returnfalse; for(int i=0;i<length;i++){ if(numbers[i]<0 || numbers[i]>=length) returnfalse; } int times[length]; for(int i=0;i<length;i++) times[i]=0; for(int i=0;i<length;i++) times[numbers[i]]++; *duplication=-1; for(int i=0;i<length;i++){ if(times[i]>1){ *duplication=i; returntrue; } } returnfalse; } };
classSolution { public: // Parameters: // numbers: an array of integers // length: the length of array numbers // duplication: (Output) the duplicated number in the array number // Return value: true if the input is valid, and there are some duplications in the array number // otherwise false boolduplicate(int numbers[], int length, int* duplication){ if(numbers==NULL || length<=0) returnfalse; for(int i=0;i<length;i++){ if(numbers[i]<0 || numbers[i]>=length) returnfalse; } for(int i=0;i<length;i++){ numbers[numbers[i]%length]+=length; } for(int i=0;i<length;i++){ if(numbers[i]/length>1){ *duplication=i; returntrue; } } returnfalse; } };
classSolution { public: // Parameters: // numbers: an array of integers // length: the length of array numbers // duplication: (Output) the duplicated number in the array number // Return value: true if the input is valid, and there are some duplications in the array number // otherwise false boolduplicate(int numbers[], int length, int* duplication){ if(numbers==NULL || length<=0) returnfalse; for(int i=0;i<length;i++){ if(numbers[i]<0 || numbers[i]>=length) returnfalse; } for(int i=0;i<length;i++){ while(i!=numbers[i]){ if(numbers[i]==numbers[numbers[i]]){ *duplication=numbers[i]; returntrue; } int t=numbers[i]; numbers[i]=numbers[t]; numbers[t]=t; } } returnfalse; } };