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; } };
分析:
不太好理解。
原文地址:https://www.cnblogs.com/CJT-blog/p/11287865.html
时间: 2024-10-10 00:09:51