leetcode287:Find the Duplicate Number
程序员文章站
2022-04-15 14:42:12
...
因为有时间复杂度和空间复杂度的限制,不能用集合和排序的方法,此处用循环检测的方法,存在唯一重复的数,数的范围在1——n,那么存在指向相同数字的索引(环的入口处),利用环检测的方法找出环的入口位置。
class Solution {
public int findDuplicate(int[] nums) {
int slow = 0;
int fast = 0;
slow = nums[slow];
fast = nums[nums[fast]];
while (slow != fast) {
slow = nums[slow];
fast = nums[nums[fast]];
}
fast = 0;
while (fast != slow) {
fast = nums[fast];
slow = nums[slow];
}
return fast;
}
}
上一篇: Java Set集合去重
下一篇: MongoDB百万级数据去重