From 7264d28fdf689abbf45c3eb74d1051c3e3994fed Mon Sep 17 00:00:00 2001 From: Ryan Martin Date: Sat, 24 Jun 2023 04:48:09 +0800 Subject: [PATCH] create 0287-find-the-duplicate-number.rs --- rust/0287-find-the-duplicate-number.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 rust/0287-find-the-duplicate-number.rs diff --git a/rust/0287-find-the-duplicate-number.rs b/rust/0287-find-the-duplicate-number.rs new file mode 100644 index 000000000..9e5d80e5b --- /dev/null +++ b/rust/0287-find-the-duplicate-number.rs @@ -0,0 +1,17 @@ +impl Solution { + pub fn find_duplicate(nums: Vec) -> i32 { + let (mut slow, mut fast) = (nums[0], nums[nums[0] as usize]); + while slow != fast { + slow = nums[slow as usize]; + fast = nums[nums[fast as usize] as usize]; + } + + slow = 0; + while slow != fast { + slow = nums[slow as usize]; + fast = nums[fast as usize]; + } + + slow + } +}