Для массива, содержащего 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; }