По заданному массиву целых чисел каждый элемент представляет здание. Например: int buildings[] = {1, 4, 3, 2, 3, 1}
.
Если бы я рисовал здания кистью по горизонтали, сколько мазков я бы использовал?
Я должен написать функцию, которая возвращает количество этих мазков. Например 5
.
Я могу сделать это легко во время выполнения O(n^2)
, используя 2 цикла.
-
Внешний цикл работает на уровнях каждого здания (согласно самому высокому зданию).
-
Внутренний цикл выполняется в массиве от
0
доn
и сравнивает разницу высот (0
или1
) между двумя ближайшими элементами.
Как я могу сделать это в O(n)
времени и O(n)
пространстве?