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; } };
