https://leetcode.com/problems/replace-elements-with-greatest-element-on-right-side/ Easy

Условие

Дан массив arr. Для каждого элемента замените его на наибольший элемент среди стоящих справа. Последний элемент замените на -1. Верните изменённый массив.

Примеры

Input: arr = [17, 18, 5, 4, 6, 1] Output: [18, 6, 6, 6, 1, -1] Explanation: Каждый элемент заменяется на максимум справа, последний становится -1.

Input: arr = [400] Output: [-1] Explanation: Нет элементов справа.

Решение

fun replaceElements(arr: IntArray): IntArray {
    var maxRight = -1
    for (i in arr.size - 1 downTo 0) {
        val current = arr[i]
        arr[i] = maxRight           // Заменяем текущий элемент на максимум справа
        if (current > maxRight) {
            maxRight = current      // Обновляем максимум
        }
    }
    return arr
}

Временная сложность

O(n), где n — длина массива.

Пространственная сложность

O(1), используется только переменная для хранения максимума.