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), используется только переменная для хранения максимума.