思路转自https://blog.youkuaiyun.com/makuiyu/article/details/43650365:
class Solution {
public:
int trap(vector<int>& height) {
int left=0,right=height.size()-1;
int ans=0;
while(left<right)
{
int minHeight=min(height[left],height[right]);
if(height[left]==minHeight)
{
while(left<right&&height[left]<=minHeight)
{
ans+=(minHeight-height[left]);
left++;
}
}
else
{
while(left<right&&height[right]<=minHeight)
{
ans+=(minHeight-height[right]);
right--;
}
}
}
return ans;
}
};

本文介绍了一种解决雨水陷阱问题的有效算法。通过定义两个指针分别从数组的两端开始遍历,每次移动高度较低的一侧指针直到两指针相遇。此方法可以有效地计算出在给定高度数组中能接多少雨水。
297

被折叠的 条评论
为什么被折叠?



