Минимальное возможное значение D, которое при многократном добавлении или вычитании из K дает каждый элемент массива.

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

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

Примеры:

Input: arr[ ] = {1, 7, 11}, K = 3
Output: 2
Explanation:
Considering the value of D to be 2, every array element can be obtained by the following operations:

  • arr[0](= 1):  Decrementing 2 from K(=3) obtains arr[0].
  • arr[1](= 7): Incrementing K(=3) by 2 times D obtains arr[1].
  • arr[2](= 11): Incrementing K(=3) by 4 times D obtains arr[2].

Therefore, D (=2) satisfies the conditions. Also, it is the maximum possible value of D.

Input: arr[ ] = {33, 105, 57}, K = 81
Output: 24

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

  • Пройдите массив arr[] и измените значение текущего элемента arr[i] на abs(arr[i] – K) .
  • Инициализируйте переменную, скажем, D как arr[0], чтобы сохранить результат.
  • Выполните итерацию в диапазоне [1, N – 1] , используя переменную, скажем, i, и на каждой итерации обновляйте значение D togcd (D, arr[i]).
  • После выполнения вышеуказанных шагов выведите значение D в качестве ответа.

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

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