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;
    }
};
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务