Минимизируйте максимальную разницу между любой парой элементов массива ровно на одно удаление

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

Дан массив arr[] , состоящий из N целых чисел (N > 2), задача состоит в том, чтобы минимизировать максимальную разницу между любой парой элементов (arr[i], arr[j]) , удалив ровно один элемент.

Примеры:

Input: arr[] = {1, 3, 4, 7}
Output: 3
Explanation:
Removing the element 7 from array, modifies the array  to {1, 3, 4}.
Here (4, 1) has difference = 4 – 1 = 3 which is minimum possible maximum difference. 

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

Наивный подход: самый простой подход к решению данной проблемы - удалить каждый элемент один за другим и проверить, какой элемент дает минимальную максимальную разницу между каждой парой элементов.

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

Эффективный подход. Приведенный выше подход также можно оптимизировать, если учесть тот факт, что максимальная разница равна разнице между максимальным и минимальным элементом данного массива. Таким образом, удаление максимального элемента или удаление минимального элемента всегда дает оптимальный ответ.

Поэтому идея состоит в том, чтобы отсортировать данный массив в порядке возрастания и вывести в качестве результата минимум значения (arr[N – 2] – arr[0]) и (arr[N – 1] – arr[1]) . минимальная максимальная разница.

Ниже приведена реализация вышеуказанного подхода:

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

РЕКОМЕНДУЕМЫЕ СТАТЬИ