Mid Coding

Solve "Find the Duplicate Number" problem in an array of n+1 integers?

public int FindDuplicate(int[] nums) {

int slow = nums[0], fast = nums[0];

do {

slow = nums[slow];

fast = nums[nums[fast]];

} while (slow != fast);

fast = nums[0];

while (slow != fast) {

slow = nums[slow];

fast = nums[fast];

return slow;

Explanation:

Floyd’s Tortoise and Hare cycle detection, treating values as pointers.

More from C# Programming Tutorial

All questions for this course