寻找重复数

class Solution {

public:

int findDuplicate(vector<int>& nums) {

//从索引 0 出发,按照 nums[i] 跳转,由于值在 1 到 n 之间,不会越界。

// 因为有重复数字,所以至少有两个不同的索引会指向同一个值(即同一个后继节点),从而形成环。

// 重复的数字就是环的入口

if(nums.size()<2)return -1;

int slow=nums[0],fast=nums[nums[0]];

while(slow!=fast){

slow=nums[slow];

fast=nums[nums[fast]];

}

slow=0;

while(slow!=fast){

slow=nums[slow];

fast=nums[fast];

}

return fast;

}//1 2 3 3 4

};

相关推荐
圣保罗的大教堂2 小时前
leetcode 3070. 元素和小于等于 k 的子矩阵的数目 中等
leetcode
dgfhf2 小时前
高性能计算资源调度
开发语言·c++·算法
x_xbx2 小时前
LeetCode:19. 删除链表的倒数第 N 个结点
算法·leetcode·链表
weixin_307779132 小时前
OpenClaw-CN 安全增强方案:从理念到落地的全面剖析
开发语言·人工智能·算法·安全·语言模型
CoovallyAIHub2 小时前
Agency-Agents(52k+ Stars):140+ 个角色模板,让 AI 编程助手变成一支专业团队
前端·算法·编程语言
nananaij2 小时前
【LeetCode-05 好数对的数目 python解法】
python·算法·leetcode
季远迩2 小时前
73.矩阵置零(中等)
算法
做一个码农都是奢望2 小时前
计算机控制系统课程CH3:数字控制系统闭环响应分析与 MATLAB 实现
人工智能·算法·matlab
爱玩亚索的程序员2 小时前
算法入门(三)学会用matplotlib画图
算法·matplotlib