Проверьте, может ли быть сгенерирован массив, где ни один элемент не является средним геометрическим соседей
Даны два целых числа 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, XInput: 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)