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 voidswap(int numbers[], constint a, constint b) { int t = numbers[a]; numbers[a] = numbers[b]; numbers[b] = t; } boolduplicate(int numbers[], int length, int* duplication){ if (numbers == nullptr || length == 0) { returnfalse; } else { for (int i = 0; i < length; i++) { while (numbers[i] != i) { if (numbers[i] < 0 || numbers[i] >= length) { returnfalse; } else { if (numbers[numbers[i]] == numbers[i]) { *duplication = numbers[i]; returntrue; } else { swap(numbers, i, numbers[i]); } } } } returnfalse; } } };