LeetCode 42. Trapping Rain Water

来源:互联网 发布:陕西乡土文化数据 编辑:程序博客网 时间:2024/06/05 06:50

描述

给出一些柱子的高度,求这些连续柱子所能存储的水的体积

解决

找出最高的柱子,然后遍历左右两边即可


class Solution {public:    int trap(vector<int>& height) {        int length = height.size();        if (length <= 1)            return 0;        int max_height_index = -1, tmp_heigth = INT_MIN;        for (int i = 0; i < length; ++i)        {            if (height[i] >= tmp_heigth)            {                tmp_heigth = height[i];                max_height_index = i;            }        }            auto sum = 0, max_val = 0;        for (int i = 0; i < max_height_index && i < length - 1; ++i)        {            if (height[i] > max_val)                max_val = height[i];            else                sum += max_val - height[i];        }        max_val = 0;        for (int i = length - 1; i > max_height_index && i > 0; --i)        {            if (height[i] > max_val)                max_val = height[i];            else                sum += max_val - height[i];        }        return sum;    }};
0 0
原创粉丝点击