class Solution {
public:
int findDuplicate(vector<int>& nums) {
//从索引 0 出发,按照 numsi 跳转,由于值在 1 到 n 之间,不会越界。
// 因为有重复数字,所以至少有两个不同的索引会指向同一个值(即同一个后继节点),从而形成环。
// 重复的数字就是环的入口
if(nums.size()<2)return -1;
int slow=nums0,fast=numsnums\[0];
while(slow!=fast){
slow=numsslow;
fast=numsnums\[fast];
}
slow=0;
while(slow!=fast){
slow=numsslow;
fast=numsfast;
}
return fast;
}//1 2 3 3 4
};