Минимальное возможное значение D, которое при многократном добавлении или вычитании из K дает каждый элемент массива.
Учитывая массив 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)