题解 | #接雨水问题#
C++ 解法,双指针,理解短边移动
class Solution {
public:
/**
* max water
* @param arr int整型vector the array
* @return long长整型
*/
long long maxWater(vector<int>& arr) {
long long l = 0, r = arr.size() - 1, lMax = 0, rMax = 0, ans = 0;
while (l <= r) {
if (arr[l] < arr[r]) {
if (arr[l] > lMax) {
lMax = arr[l];
} else {
ans += lMax - arr[l];
}
++l;
} else {
if (arr[r] > rMax) {
rMax = arr[r];
} else {
ans += rMax - arr[r];
}
--r;
}
}
return ans;
}
}; 
京公网安备 11010502036488号