参考了一下,没想出来,呵呵
class Solution {
public:
/**
* max water
* @param arr int整型vector the array
* @return long长整型
*/
long long maxWater(vector<int>& arr) {
if(arr.size() <= 2){
return 0;
}
// int max = arr[0];
// int maxIndex = 0;
// for(int i=1;i<arr.size();i++){
// if(arr[i] > max){
// max = arr[i];
// maxIndex = i;
// }
// }
// long long water = 0;
// int side = arr[0];
// for(int i =1;i<maxIndex;i++){
// if(arr[i] > side){
// side = arr[i];
// }else{
// water += (side-arr[i]);
// }
// }
// side = arr[arr.size()-1];
// for(int i = arr.size()-2;i>maxIndex;i--){
// if(arr[i] > side){
// side = arr[i];
// }else{
// water += (side-arr[i]);
// }
// }
long long water = 0;
int left = 0;
int right = arr.size()-1;
int leftVal = arr[left];
int rightVal = arr[right];
while(left < right){
if(leftVal <= rightVal){
if(arr[left+1] > leftVal){
leftVal = arr[left+1];
}else{
water += (leftVal-arr[left+1]);
}
left++;
}else{
if(arr[right-1] > rightVal){
rightVal = arr[right-1];
}else{
water += (rightVal-arr[right-1]);
}
right--;
}
}
return water;
}
};



京公网安备 11010502036488号