Найдите наибольшее положительное целое число x, отсутствующее в несортированном массиве, такое, что min(arr[]) < x < max(arr[])

Опубликовано: 19 Сентября, 2022

Дан массив arr[] , содержащий целые числа. Задача состоит в том, чтобы найти наибольшее положительное целое число x , отсутствующее в массиве, такое, что min(arr[]) < x < max(arr[]) .

Примеры

Input: arr[] = {2, 3, 7, 6, 8}
Output: 5
Explanation: 5 is the largest positive integer missing from arr[] and 2 < 5 < 8.

Input: arr[] = { 2, 3, -7, 1, 4 }
Output: -1

Наивный подход: отсортируйте массив по убыванию и верните первое отсутствующее положительное число. Если ничего не пропущено, верните -1 .

Временная сложность: O(N logN)
Временная сложность: O(1)

Эффективный подход: эту проблему можно решить с помощью хеширования. Создайте Hashmap всех положительных элементов в данном массиве. После построения Hashmap просмотрите HashMap с обратной стороны и верните первое отсутствующее положительное число. Если ничего не пропущено, верните -1 .

Ниже приведена реализация описанного выше подхода.


Временная сложность: O(N)
Вспомогательное пространство: O(N)