n башен, их высоты — в массиве heights; все высоты различны.
С башни i видна башня j, если i < j и все башни строго между ними ниже обеих: min(heights[i], heights[j]) > max(heights[i+1..j-1]). Соседние башни всегда видят друг друга.
Верните массив длины n, где на месте i стоит число башен справа, видимых с башни i.
Прямой перебор пар — O(n²); есть решение за O(n).heights=[4, 2, 3, 1, 5] → [3, 1, 2, 1, 0]
С башни 0 видны башни 1, 2 и 4 (башню 3 закрывает башня 2). С башни 1 видна только 2, с башни 2 — 3 и 4, с башни 3 — 4, с последней — никто.
heights=[1, 2, 3] → [1, 1, 0]
Каждая башня видит только соседнюю: следующая выше и закрывает остальные.
heights=[4, 2, 3, 1, 5]
[3, 1, 2, 1, 0]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 99 тестов на сервере, включая скрытые.