287. 寻找重复数(转换成图论去做,环形链表)

### 解题思路

把数组转化成图,可以惊奇的发现该题变成了(环形链表II),用那道题的方法解决即可(找到链表环的起点)

 

### 代码

class Solution {
public:
    int findDuplicate(vector<int>& nums) {
        int a = 0,b = 0;
        while(true){
            a = nums[a];
            b = nums[nums[b]]; //往后跳两格
            if(a == b){
                int c = 0;
                while(a != c){
                    c = nums[c];
                    a = nums[a];
                }
                return a;
            }
        }
        return 0;
    }
};

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页