寻找重复数
题目 寻找重复数
思路分析
没必要 但可以用这个快慢指针构造环路去做
在值和下标间构建一条边 下标和值间再构建一条边
如果有重复的数 就肯定会有俩个值指向同一个下标的边
从而形成回路
这个回路就是入口 就是我们要找的重复的数
代码实现
class Solution {
public:
int findDuplicate(vector<int>& nums) {
int slow=0,fast=0;
do{
slow=nums[slow];
fast=nums[nums[fast]];
}while(slow!=fast);
slow=0
while(slow!=fast)
{
slow=nums[slow];
fast=nums[fast];
}
return slow;
}
};
💬 评论