All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0201_0300.s0287_find_the_duplicate_number.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
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