Минимизируйте значение данной функции для любого возможного значения X

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

Учитывая массив A[] , состоящий из N целых чисел ( индексация на основе 1 ), задача состоит в том, чтобы найти минимальное значение функции для любого возможного значения X .

Примеры:

Input: A[] = {1, 2, 3, 4}  
Output: 0
Explanation:
Consider the value of X as 0, then the value of the given function is (1 – 1 + 2 – 2 + 3 – 3 + 4 – 4) = 0, which is minimum.

Input: A[] = {5, 3, 9}
Output: 5

Подход: Данная проблема может быть решена на основе следующих наблюдений:

  • Рассмотрим функцию как (B[i] = A[i] − i) , затем, чтобы минимизировать значение , идея состоит в том, чтобы выбрать значение X в качестве медианы массива B[] таким образом, чтобы сумма была минимизирована.

Следуйте инструкциям, чтобы решить проблему:

  • Инициализируйте массив, скажем, B[] , который хранит значение (A[i] – i) для каждого возможного значения массива A[] .
  • Пройдите по заданному массиву A[] и для каждого индекса i обновите значение B[i] как (A[i] – i) .
  • Отсортируйте массив B[] в порядке возрастания и найдите значение X как медиану массива B[].
  • После выполнения вышеуказанных действий найдите значение заданной функции для расчетного значения X .

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

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