class Solution {
public:
long long maxWater(vector<int>& arr) {
//排除空数组
if(arr.size() == 0)
return 0;
long long res = 0;
//左右双指针
int left = 0;
int right = arr.size() - 1;
//中间区域的边界高度
int maxL = 0;
int maxR = 0;
//直到左右指针相遇
while(left < right){
//每次维护往中间的最大边界
maxL = max(maxL, arr[left]);
maxR = max(maxR, arr[right]);
//较短的边界确定该格子的水量
if(maxR > maxL)
res += maxL - arr[left++];
else
res += maxR - arr[right--];
}
return res;
}
};
BM94 接雨水问题
最新推荐文章于 2024-08-22 17:27:46 发布