Недавно я наткнулся на вопрос интервью, заданный Amazon, и я не могу найти оптимизированный алгоритм для решения этого вопроса:
Вам предоставляется входной массив, каждый элемент которого представляет высоту строчных башен. Ширина каждой башни равна 1. Начинается дождь. Сколько воды собирается между башнями?
Пример
Input: [1,5,3,7,2] , Output: 2 units
Explanation: 2 units of water collected between towers of height 5 and 7
*
*
*w*
*w*
***
****
*****
Другой пример
Input: [5,3,7,2,6,4,5,9,1,2] , Output: 14 units
Explanation= 2 units of water collected between towers of height 5 and 7 +
4 units of water collected between towers of height 7 and 6 +
1 units of water collected between towers of height 6 and 5 +
2 units of water collected between towers of height 6 and 9 +
4 units of water collected between towers of height 7 and 9 +
1 units of water collected between towers of height 9 and 2.
Сначала я думал, что это может быть решено с помощью проблемы запаса (http://www.geeksforgeeks.org/the-stock-span-problem/), но я был не прав, поэтому было бы здорово, если бы любой может подумать об алгоритме, оптимизированном по времени для этого вопроса.