Task 15. Объем воды в гистограмме

Task 15. Объем воды в гистограмме

UniLecs

Задача: Дана гистограмма, она представлена числовым массивом:

[ 3, 6, 2, 4, 2, 3, 2, 10, 10, 4 ]

Нужно посчитать объем воды (1 блок в гистограмме), ктр наберется внутри нее.

Идея: будем работать с локальными максимумами. Нам нужно найти все "высокие стенки" справа и слева, где бы могла скопиться вода. Крайние точки мы не будем учитывать, т.к. очевидно, что там вода скопиться не может.

По сути нам нужно пройти по массиву два раза и найти локальные максимумы слева и справа, затем найти минимальный максимум для каждой точки. Тогда разность локального максимума со значением гистограммы в этой точке и будем объемом воды для этого блока.

Думаю нагляднее будет показать на рисунке.

Реализация: напишем нашу функцию на JS

https://gist.github.com/unilecs/26f033372e03881c4e6f829052d61af7

Report Page