用双指针,从两边向中间收缩。思考一下为什么不能从一边往另一边走到头。

class Solution {
public:
    long long maxWater(vector<int>& arr)
    {
        int len = arr.size();
        if(len == 0) return 0;
        int left = 0, right = len -1;
        long long ans = 0L;
        while(left < right)
        {
            int temp = arr[left] < arr[right] ? arr[left] : arr[right];
            while(left < right && arr[left] <= temp)
                ans += temp - arr[left], left++;
            while(right > left && arr[right] <= temp)
                ans += temp - arr[right], right--;
        }
        return ans;
    }
};