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; } };
分析:ui
不太好理解。spa