题目链接
如果不考虑空间O1的话完全可以用hashset 来做
这题可以利用快慢指针的思想判断环的起点
LeetCode142
本题构建链表为 nums[0]一>nums[nums[0]]一>nums[nums[nums[0]]]…
当快慢指针相遇时已经在环内了
重置慢指针到链表头 然后和快指针一起每次向前走一步,再次相遇就是环的入口
public int findDuplicate(int[] nums) {
int fast = nums[0] ,slow = nums[0];
while (true){
slow = nums[slow];
fast = nums[nums[fast]];
if (slow == fast) break;
}
slow = nums[0];
while (slow != fast){
slow = nums[slow];
fast = nums[fast];
}
return slow;
}