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;
    }
};

分析:ui

不太好理解。spa

相關文章
相關標籤/搜索