287. Find the Duplicate Number

Given an arraynumscontainingn+ 1 integers where each integer is between 1 andn(inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.

Note:

  1. You must not modify the array (assume the array is read only).
  2. You must use only constant, O (1) extra space.
  3. Your runtime complexity should be less than O(n 2 ) .
  4. There is only one duplicate number in the array, but it could be repeated more than once.

Credits:
Special thanks to@jianchao.li.fighterfor adding this problem and creating all test cases.

class Solution {
    public int findDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<>();

        for (int num : nums){
            if (set.contains(num)) return num;

            set.add(num);
        }

        return -1;
    }
}

results for ""

    No results matching ""