用双指针,从两边向中间收缩。思考一下为什么不能从一边往另一边走到头。
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;
}
};


京公网安备 11010502036488号