From 4a74aac7db6c134e62147b18609ddf7f8a776ad4 Mon Sep 17 00:00:00 2001 From: Colston Bod-oy <75562733+ColstonBod-oy@users.noreply.github.com> Date: Mon, 24 Apr 2023 17:06:42 +0800 Subject: [PATCH] Update 0287-find-the-duplicate-number.java Used a do while loop to make the code more concise. --- java/0287-find-the-duplicate-number.java | 28 +++++++++++++----------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/java/0287-find-the-duplicate-number.java b/java/0287-find-the-duplicate-number.java index 3b861c38b..2ea3296af 100644 --- a/java/0287-find-the-duplicate-number.java +++ b/java/0287-find-the-duplicate-number.java @@ -3,24 +3,26 @@ // Space Complexity: O(1) class Solution { - public int findDuplicate(int[] nums) { - int fast = nums[0]; - int slow = nums[0]; - boolean first = true; - while (first || fast != slow) { - if (first) first = false; + int slow = 0; + int fast = 0; + + do { slow = nums[slow]; fast = nums[nums[fast]]; - if (fast == slow) break; } - int slow2 = nums[0]; - while (slow2 != slow) { - if (first) first = false; - slow2 = nums[slow2]; + + while (slow != fast); + + int slow2 = 0; + + do { slow = nums[slow]; - if (slow2 == slow) return slow; + slow2 = nums[slow2]; } - return slow; + + while (slow != slow2); + + return slow2; } }