#include <iostream>
#include <vector>
int findDuplicate(std::vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n; ++i) {
// 确保 nums[i] 在 0 到 n-1 的范围内
if (nums[i] < 0 || nums[i] >= n) {
return -1;
}
while (nums[i] != i) {
if (nums[i] == nums[nums[i]]) {
return nums[i];
}
// 交换 nums[i] 和 nums[nums[i]]
std::swap(nums[i], nums[nums[i]]);
}
}
return -1;
}
int main() {
std::vector<int> nums = {2, 3, 5, 4, 3, 2, 6, 7};
int result = findDuplicate(nums);
std::cout << "重复的数字是: " << result << std::endl;
return 0;
}