Программа Javascript для максимальной разницы между группами размера два

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

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

Input : arr[] = {1, 4, 9, 6}
Output : 10
Groups formed will be (1, 4) and (6, 9), 
the difference between highest sum group
(6, 9) i.e 15 and lowest sum group (1, 4)
i.e 5 is 10.


Input : arr[] = {6, 7, 1, 11}
Output : 11
Groups formed will be (1, 6) and (7, 11), 
the difference between highest sum group
(7, 11) i.e 18 and lowest sum group (1, 6)
i.e 7 is 11.

Простой подход: мы можем решить эту проблему, составив все возможные комбинации и проверив каждый набор различий комбинаций между группой с наибольшей суммой и с наименьшей суммой. Всего будет сформировано n*(n-1)/2 таких групп (nC2).
Сложность времени: O (n ^ 3), потому что для создания групп потребуется O (n ^ 2), а для проверки каждой группы потребуется n итераций, поэтому в целом это занимает O (n ^ 3) времени.
Эффективный подход: мы можем использовать жадный подход. Отсортируйте весь массив, и наш результат будет суммой двух последних элементов минус сумма первых двух элементов.

Выход:

11

Временная сложность: O (n * log n)
Дальнейшая оптимизация:
Вместо сортировки мы можем найти максимум два и минимум два за линейное время и уменьшить временную сложность до O(n).

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

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

Пожалуйста, обратитесь к полной статье о максимальной разнице между группами размера два для получения более подробной информации!