应用快慢指针思想
class Solution {
public:
int findDuplicate(vector<int>& nums) {
int n=nums.size();
int fast=0;
int slow=0;
while(1)
{
slow=nums[slow];
fast=nums[nums[fast]];
if(slow==fast)
break;
}
fast=0;
while(fast!=slow)
{
fast=nums[fast];
slow=nums[slow];
}
return slow;
}
};