leecode第二百八十七题(寻找重复数)
class Solution { public: int findDuplicate(vector<int>& nums) { int slow_index= nums[0]; int quick_index= nums[0]; do { slow_index=nums[slow_index]; quick_index=nums[nums[quick_index]]; }while(slow_index!=quick_index);//可以理解成一个状态向量机,状态转移过程中一定会有环存在 slow_index = nums[0]; while (slow_index != quick_index) {//检测环的入口,二者会在环入口处相遇 slow_index = nums[slow_index]; quick_index = nums[quick_index]; } return slow_index; } };
分析:
不太好理解。