首先找到整个序列的最大值,然后从左右两端 往最大值进行计算。 令sum 是储水量。 从低处往高处走计算步骤 首先是左侧最高点的设为 max,接着往右走如果当前的高度 arr[i] 比 max 小则 sum = sum + (max - arr[i]) 如果当前高度比max 高则更新max = arr[i]. 从高处往低处走则比较麻烦,但是我们可以转换问题,将从高处往低处 反过来 变成从低处往高处走 就能继续用上面的方法了。 所以我们只要找到全局最高处,那么两段往最高处走 就是低处往高处走。 long long maxWater(vector<int>& arr) { ...