42. Trapping Rain Water

    xiaoxiao2021-12-14  40

    problem:

    Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. 

    For example,  Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.

    这道题是要求计算能装多少水。

    这里是两边往中间遍历,记录当前第二高点secHight,然后利用这个第二高点减去当前历经的柱子,剩下就装水容量了。从两边往里面理解为,只要对面有个第一高的挡着,就一定能存入水了。

    class Solution { public: int trap(vector<int>& height) { int water = 0; int left = 0; int right = height.size()-1; int secheight = 0; while(left < right) { if(height[left] < height[right]) { secheight = max(secheight, height[left]); water += secheight - height[left]; left++; } else { secheight = max(secheight, height[right]); water += secheight - height[right]; right--; } } return water; } };

    转载请注明原文地址: https://ju.6miu.com/read-968764.html

    最新回复(0)