Для массива, содержащего n различных чисел, взятых из 0, 1, 2, ..., n, найдите то, которое отсутствует в массиве.

Пример 1:

Input: [3,0,1]
Output: 2

Пример 2:

Input: [9,6,4,2,3,5,7,0,1]
Output: 8

Примечание.
Ваш алгоритм должен работать с линейной сложностью выполнения. Не могли бы вы реализовать это, используя только постоянную дополнительную сложность пространства?

// Hashset solution
public int missingNumber(int[] nums) {
        Set<Integer> set = new HashSet<Integer>();
        for (int num: nums) {
            set.add(num);
        }
        for (int number = 0; number < nums.length + 1; number++) {
            if (!set.contains(number)) return number;
        }
        return -1;
    }
// Scan the array and check the difference 
public int missingNumber(int[] nums) {
        Arrays.sort(nums);
        if (nums[0] != 0) {
            return 0;
        } else if (nums[nums.length - 1] != nums.length)  {
            return nums.length;
        }       
            for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i+1] - nums[i] != 1) {
                return nums[i]+1;
            }
        }
        return -1;
    }