给定一组柱子高度的数组 height,需要计算这些柱子之间能够接住的雨水总量。直观来看,每个柱子上方能够存多少雨水,取决于其左右两侧的最高柱子的高度。
本题可以使用 双指针法 进行求解,主要思路如下:
left 和 right,分别指向数组的左右两端。left_max 和 right_max,分别表示当前位置左侧和右侧的最大高度。height[left] < height[right],说明 left 侧的最大值决定了 left 位置能接多少水:给定n个非负整数表示每个宽度为 1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

输入共两行。
第一行为两个个整数n,代表数组height的长度。
第二行为n个整数height0,height1,...,heightn−1,数字之间以空格分隔。
一个整数,表示答案。
输入
12
0 1 0 2 1 0 1 3 2 1 2 1
输出
6
上面是由数组[0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接6个单位的雨水(蓝色部分表示雨水)
输入
6
4 2 0 3 2 5
输出
9