g0201_0300.s0287_find_the_duplicate_number.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0201_0300.s0287_find_the_duplicate_number;
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Binary_Search #Two_Pointers
// #Bit_Manipulation #Binary_Search_II_Day_5 #Big_O_Time_O(n)_Space_O(n)
// #2022_07_06_Time_2_ms_(99.82%)_Space_61.1_MB_(83.92%)
/**
* 287 - Find the Duplicate Number\.
*
* Medium
*
* Given an array of integers `nums` containing `n + 1` integers where each integer is in the range `[1, n]` inclusive.
*
* There is only **one repeated number** in `nums`, return _this repeated number_.
*
* You must solve the problem **without** modifying the array `nums` and uses only constant extra space.
*
* **Example 1:**
*
* **Input:** nums = [1,3,4,2,2]
*
* **Output:** 2
*
* **Example 2:**
*
* **Input:** nums = [3,1,3,4,2]
*
* **Output:** 3
*
* **Example 3:**
*
* **Input:** nums = [1,1]
*
* **Output:** 1
*
* **Example 4:**
*
* **Input:** nums = [1,1,2]
*
* **Output:** 1
*
* **Constraints:**
*
* * 1 <= n <= 105
* * `nums.length == n + 1`
* * `1 <= nums[i] <= n`
* * All the integers in `nums` appear only **once** except for **precisely one integer** which appears **two or more** times.
*
* **Follow up:**
*
* * How can we prove that at least one duplicate number must exist in `nums`?
* * Can you solve the problem in linear runtime complexity?
**/
public class Solution {
public int findDuplicate(int[] nums) {
int[] arr = new int[nums.length + 1];
for (int num : nums) {
arr[num] += 1;
if (arr[num] == 2) {
return num;
}
}
return 0;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy