class Solution {
public:
int duplicateInArray(vector<int>& nums)
{
int n = nums.size();
for(auto x : nums)
if(x < 0 || x >= n) return -1; // 数组里面的数超出范围
for(int i = 0; i < n; i ++)
{
while(nums[nums[i]] != nums[i]) swap(nums[nums[i]] , nums[i]);
// 重复判断当前的数是否是下标否则与下标交换
// 要是没有重复的话可以令下标为数本身
if(nums[i] != i) return nums[i]; // 经过循环后每个位置不是自己的情况就是重复
}
return -1; // 没有重复 返回-1
}
};