class Solution {
public:
long long maxWater(vector& arr) {
// write code here
int n = arr.size();
if(n < 2){
return 0;
}
int l = 0;
int r = n - 1;
int mark = min(arr[l], arr[r]);// 找出左右边界的最小值作为水位高度
long sum = 0;
while(l < r){
// 如果左边较低,则左边界向右遍历, 否则右边界向左移动
if(arr[l] < arr[r]){
l++;
// 如果当前标尺小于水位,则水量累加
if(arr[l] < mark){
sum += mark - arr[l];
}else{// 否则,将此标尺和右边边界高度进行比较,找出剩下数组中的新水位
mark = min(arr[r], arr[l]);
}
}else{
r--;
// 同理,如果当前标尺小于水位,则水量累加
if(arr[r] < mark){
sum += mark - arr[r];
}else{// 否则,将此标尺和左边界的高度进行比较,找出剩余数组中的新水位
mark = min(arr[l],arr[r]);
}
}
}
return sum;
}
};



