题解 | #接雨水问题#
接雨水问题
http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
双指针
class Solution {
public:
/**
* max water
* @param arr int整型vector the array
* @return long长整型
*/
long long maxWater(vector<int>& arr) {
// write code herezzzzzzz
int left = 0;
int right = arr.size() - 1;
int leftMax = arr[left];
int rightMax = arr[right];
long long result{};
// 一次遍历
while (left < right) {
if (arr[left] < arr[right]) {
left++;
leftMax = std::max(leftMax, arr[left]);
result += (leftMax - arr[left]);
}
else {
right--;
rightMax = std::max(rightMax, arr[right]);
result += (rightMax - arr[right]);
}
}
return result;
}
}; 
查看1道真题和解析