題目描述:
思路:根據題目描述,n+1個空間隻有範圍為1~n的整數,是以必定存在重複數值,題目說有且僅有一個重複數值,是以,必定存在環。這裡可以設定快慢指針。
慢指針:
t=nums[0]=1
t=nums[1]=3
t=nums[3]=2
t=nums[2]=4
t=nums[4]=2
t=nums[2]=4
…
快指針:
t=nums[nums[0]]=3
t=nums[nums[3]]=4
class Solution {
public:
int findDuplicate(vector<int>& nums) {
if(nums.size()>1){
int slow=nums[0];
int fast=nums[slow];
while(fast!=slow){
fast=nums[nums[fast]];
slow=nums[slow];
}
fast=0;//這步幫助了解
while(fast!=slow){
fast=nums[fast];
slow=nums[slow];
}
return slow;
}
return -1;
}
};