力扣-287.寻找重复数

题目链接

287.寻找重复数

java 复制代码
class Solution {
    public int findDuplicate(int[] nums) {
        int low = nums[0];
        int fast = nums[nums[0]];
        //1.快慢指针找相遇点
        while (low != fast) {
            low = nums[low];
            fast = nums[nums[fast]];
        }
        //2.双指针找入环点
        int pre = 0;
        while (pre != low) {
            pre = nums[pre];
            low = nums[low];
        }
        return pre;
    }
}

小结:对nums数组建图,每个位置i连一条i → nums[i]的边。由于有且仅有唯一的重复数字target,因此target这个位置一定有起码两条指向它的边,因此整张图一定存在环,且我们要找到的target就是这个环的入口,那么整个问题就等价于142. 环形链表 II

相关推荐
会编程的土豆21 小时前
【日常做题】栈 中缀前缀后缀
开发语言·数据结构·算法
进击的荆棘21 小时前
递归、搜索与回溯——回溯
数据结构·c++·算法·leetcode·dfs
白羊by1 天前
YOLOv1~v11 全版本核心演进总览
深度学习·算法·yolo
墨尘笔尖1 天前
最大最小值降采样算法的优化
c++·算法
white-persist1 天前
【vulhub shiro 漏洞复现】vulhub shiro CVE-2016-4437 Shiro反序列化漏洞复现详细分析解释
运维·服务器·网络·python·算法·安全·web安全
FL16238631291 天前
基于C#winform部署软前景分割DAViD算法的onnx模型实现前景分割
开发语言·算法·c#
baizhigangqw1 天前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶
算法·启发式算法·web app
C雨后彩虹1 天前
最多等和不相交连续子序列
java·数据结构·算法·华为·面试
cpp_25012 天前
P2347 [NOIP 1996 提高组] 砝码称重
数据结构·c++·算法·题解·洛谷·noip·背包dp
Hugh-Yu-1301232 天前
二元一次方程组求解器c++代码
开发语言·c++·算法