力扣-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

相关推荐
大闲在人29 分钟前
8. 供应链与制造过程术语:产能
算法·制造·供应链管理·智能制造·工业工程
一只小小的芙厨34 分钟前
寒假集训笔记·以点为对象的树形DP
c++·算法
历程里程碑38 分钟前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
执风挽^1 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
Z9fish1 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
晓13131 小时前
第六章 【C语言篇:结构体&位运算】 结构体、位运算全面解析
c语言·算法
iAkuya1 小时前
(leetcode)力扣100 61分割回文串(回溯,动归)
算法·leetcode·职场和发展
梵刹古音1 小时前
【C语言】 指针与数据结构操作
c语言·数据结构·算法
VT.馒头1 小时前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
CoderCodingNo3 小时前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法