题解 | #接雨水问题#

接雨水问题

http://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f

static const auto io_sync_off = []()
{
    // turn off sync
    std::ios::sync_with_stdio(false);
    // untie in/out streams
    std::cin.tie(nullptr);
    return nullptr;
}();
class Solution {
public:
    long long maxWater(vector<int>& arr) {
        vector<int> temp;
        temp.assign(arr.begin(),arr.end());
        reverse(temp.begin(), temp.end());
        int left=0;
        int right = max_element(arr.begin(),arr.end())-arr.begin();
        long long sum=0;
        for (int i=0;i<arr.size();i++){
            if(arr[i]<min(arr[left],arr[right])){
                sum+=min(arr[left],arr[right])-arr[i];
            }else if(i==right){
                left=right;
                right=max_element(temp.begin(), temp.end()-i-1)-temp.begin();
                right=arr.size()-right-1;
            }
            else if(arr[left]<=arr[i]){
                left=i;
            }
        }
        return sum;
    }
};
全部评论

相关推荐

10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务