题目
给定n个非负整数,分别代表围栏的高度,计算给定的这组数字代表的围栏能够容纳多少水,如图所示。
输入
0 1 0 2 1 0 1 3 2 1 2 1
输出
6
分析
对于每个柱子,找到其左右两边最高的柱子,该柱子能容纳的面积是min(max_left, max_right) - height。所以可以先扫描一遍,找到最高的柱子,将数组分为两半,然后分别进行处理。
代码
#include <iostream>
#include <vector>
using namespace std;
int main()
{