Day18力扣打卡

打卡记录

寻找重复数(双指针)

链接

Floyd判圈法,先用快慢指针以不同速率进行移动,最终一定会出现相遇点,然后在使一指针从初始开始,两指针再以同步调移动,再次相遇的点一定为循环开始的点位。

cpp 复制代码
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 fast;
    }
};
相关推荐
ChoSeitaku12 小时前
16.C++入门:list|手撕list|反向迭代器|与vector对比
c++·windows·list
氷泠12 小时前
课程表系列(LeetCode 207 & 210 & 630 & 1462)
算法·leetcode·拓扑排序·反悔贪心·三色标记法
代码or搬砖12 小时前
JVM垃圾回收器
java·jvm·算法
老鼠只爱大米12 小时前
LeetCode算法题详解 15:三数之和
算法·leetcode·双指针·三数之和·分治法·three sum
客卿12312 小时前
C语言刷题--合并有序数组
java·c语言·算法
Qhumaing12 小时前
C++学习:【PTA】数据结构 7-1 实验6-1(图-邻接矩阵)
c++·学习·算法
No0d1es12 小时前
2025年12月 GESP CCF编程能力等级认证C++一级真题
开发语言·c++·青少年编程·gesp·ccf
2301_7737303112 小时前
系统编程—在线商城信息查询系统
c++·html
郝学胜-神的一滴12 小时前
深入理解Linux中的Try锁机制
linux·服务器·开发语言·c++·程序人生
菜鸟233号13 小时前
力扣416 分割等和子串 java实现
java·数据结构·算法·leetcode