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

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

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

Примеры:

Input: arr = [15, 9, 3]
Output:  3
Explanation: Here replace 15 with 3 so array becomes arr = [3, 9, 3] and now all elements in array are divisible by 3, so 3 is our answer

Input: arr = [16, 5, 10, 25]
Output:  5

Подход: Чтобы решить вышеуказанную проблему:

  • Итерировать целое число массива i от нуля до меньшего, чем его длина
  • Каждый раз удалять i-й элемент из массива, находить наибольший общий делитель и сохранять в переменной НОД
  • Обновить maxGcd , если текущий gcd больше, чем maxGcd

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

Сложность времени: O((N^2) * Log(M)), где M — минимальное значение в массиве.
Вспомогательное пространство: O(1)