编辑代码

#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;
}