Проверьте, можно ли сделать массив строго возрастающим, заменив элемент средним значением соседних элементов.

Опубликовано: 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)

РЕКОМЕНДУЕМЫЕ СТАТЬИ