Проверьте, можно ли сделать массив строго возрастающим, заменив элемент средним значением соседних элементов.
Опубликовано: 25 Февраля, 2023
Учитывая массив A[] размера N , задача состоит в том, чтобы проверить, можно ли сделать последовательность строго возрастающей, выполнив следующую операцию любое количество раз (0 или более):
- Выберите любые два соседних элемента A i и A i+1 и замените один из них на (A i + A i+1 )/2 (действительное число, т.е. без округления).
Примеры:
Input: A[] = {1, 2, 2}
Output: Yes
Explanation: Choose A0 and A1 and change A1 to (1 + 2) / 2 = 1.5.
The sequence after this operation is [1, 1.5, 2], which is a strictly increasing order.Input: A[] = {7, 4}
Output: No
Подход: Задача может быть решена на основе следующего наблюдения:
- If the given sequence is in decreasing order, then it is never possible to make a sequence in strictly increasing order.
- In all other cases, it is always possible.
Выполните следующие шаги, чтобы реализовать вышеуказанную идею:
- Проверить, существует ли такая пара, что A i < A i+1 , то всегда можно составить заданную последовательность в строго возрастающем порядке.
- В противном случае последовательность идет в порядке убывания.
- Следовательно, когда последовательность находится в убывающем порядке, никогда нельзя составить последовательность в строго возрастающем порядке.
Ниже приведена реализация описанного выше подхода.
Временная сложность: O(N)
Вспомогательное пространство: O(1)