题解 | #接雨水问题# C++ 解法,双指针,理解短边移动

接雨水问题

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

题解 | #接雨水问题#
C++ 解法,双指针,理解短边移动

class Solution {
public:
    /**
     * max water
     * @param arr int整型vector the array
     * @return long长整型
     */
    long long maxWater(vector<int>& arr) {
        long long l = 0, r = arr.size() - 1, lMax = 0, rMax = 0, ans = 0;
        while (l <= r) {
            if (arr[l] < arr[r]) {
                if (arr[l] > lMax) {
                    lMax = arr[l];
                } else {
                    ans += lMax - arr[l];
                }
                ++l;
            } else {
                if (arr[r] > rMax) {
                    rMax = arr[r];
                } else {
                    ans += rMax - arr[r];
                }
                --r;
            }
        }
        return ans;
    }
};
全部评论
这个算法,很润
点赞 回复
分享
发布于 2021-09-28 16:26

相关推荐

点赞 评论 收藏
转发
5 3 评论
分享
牛客网
牛客企业服务