很简单的困难题,和那道盛水的题目差不多,使用双指针往中间靠拢。
class Solution {
public:int trap(vector<int>& height) {int result=0;int front=0;int back=height.size()-1;int minheight=min(height[front],height[back]);while(front<back){if(height[front]<height[back]){front++;if(height[front]<minheight) result+=minheight-height[front];}else{back--;if(height[back]<minheight) result+=minheight-height[back];}minheight=max(minheight,min(height[front],height[back]));}return result;}
};
需要注意的是这个minheight只能升高不能降低。