题解 | #接雨水问题#
接雨水问题
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; } };