Проверьте, может ли быть сгенерирован массив, где ни один элемент не является средним геометрическим соседей

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

Даны два целых числа P и N , обозначающие частоту положительных и отрицательных значений, задача состоит в том, чтобы проверить, можете ли вы построить массив, используя P положительных элементов и N отрицательных элементов, имеющих одно и то же абсолютное значение (т.е. если вы используете X , то отрицательное целое число будет be -X ) такой, что ни один элемент не является средним геометрическим своих соседей.

Примеры :

Input: P = 3, N = 2
Output: True
Explanation: it is possible to create an array : X, X, -X, -X, X

Input: P = 4, N = 0
Output: False

Подход : Ниже приведено наблюдение для подхода:

B is said to be the geometric mean of A and C if B2 = A*C.
Since B2 is always positive, So, either B = X or B = -X and B2 = X2 because X*X = X2 and (-X)*(-X) = X2.  

Hence, the Predecessor and Successor have always opposite sign.
So the array will have a pattern like {X, X, -X, -X, X, X}

На основании приведенного выше наблюдения решение может быть получено как:

  • Если разница между P и N больше 2 , то описанная выше схема невозможна.
  • Если разница ровно 2 , то:
    • Если они встречаются нечетное количество раз каждое, расположение будет невозможно, так как будет сегмент вроде {X, -X, X} или {-X, X, -X} .
    • В противном случае возможна договоренность
  • Если разница меньше 2 , то договоренность всегда возможна.

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

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