NC128 #容器盛水问题#
容器盛水问题
http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
用双指针,从两边向中间收缩。思考一下为什么不能从一边往另一边走到头。
class Solution { public: long long maxWater(vector<int>& arr) { int len = arr.size(); if(len == 0) return 0; int left = 0, right = len -1; long long ans = 0L; while(left < right) { int temp = arr[left] < arr[right] ? arr[left] : arr[right]; while(left < right && arr[left] <= temp) ans += temp - arr[left], left++; while(right > left && arr[right] <= temp) ans += temp - arr[right], right--; } return ans; } };