Найдите такое K, что повторное вычитание K из элементов массива делает массив равным

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

Учитывая массив arr[] размера N , задача состоит в том, чтобы найти значение целого числа K такое, что его повторное вычитание из элементов массива сделает все элементы массива с минимальными операциями.

Пример:

Input: arr[] = {5, 3, 3, 7}
Output: 2
Explanation: Minimum 2 operations must be performed:
1st operation: subtract 2 from elements at indices {0, 3}, arr[] = {3, 3, 3, 5}
2nd operation: subtract 2 from element at index 3, arr[] = {3, 3, 3, 3}
So, the value of K = 2

Input: arr[] = {-1, 0, -1, 0, -1}
Output: 1

Подход: чтобы сделать все элементы в массиве равными , все элементы необходимо изменить на наименьшее значение в массиве. Таким образом, gcd разности всех элементов массива с наименьшим элементом будет значением K . Теперь, чтобы решить следующую проблему, выполните следующие действия:

  1. Создайте переменную mn для хранения минимального элемента в массиве arr .
  2. Теперь пройдитесь по массиву arr и найдите gcd различий между всеми элементами массива и mn . Сохраните это значение в переменной K.
  3. Верните K в качестве ответа на этот вопрос.

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


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