Минимизировать затраты на уменьшение массива, если при выборе каждых 2 элементов 3-й выбирается бесплатно

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

Дан массив arr[] . Задача состоит в том, чтобы минимизировать стоимость уменьшения массива при заданной операции. В одной операции выберите два элемента, добавьте их значение к общей стоимости и удалите их, а также удалите любой другой элемент со значением, почти равным двум выбранным элементам.

Примеры:

Input: arr[] = {1, 2, 3}
Output: 5
Explanation: Choose 2 and 3, cost = 5. 1 is reduced from array for free.

Input: arr[] = {6, 5, 7, 9, 2, 2}
Output: 23

Подход: Эту проблему можно решить с помощью жадного подхода. Выполните следующие шаги, чтобы решить данную проблему.

  • Отсортируйте заданный массив.
  • Пройдите отсортированный массив с конца.
  • Добавьте 2 элемента к конечной стоимости и пропустите 3-й.
  • Верните окончательную стоимость.

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


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

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