看图像接雨水,但其实简单很多
<aside> 💡 哪边矮移哪边,两边等长就都移动
</aside>
本质应该是 相遇指针+分类题 ?分三种情况:
int maxArea(vector<int>& height) {
int left = 0;
int right = height.size() - 1;
int ans = std::min(height[left], height[right]) * (right - left);
while (left < right) {
if (height[left] < height[right])
++left;
else if (height[left] > height[right])
--right;
else {
++left;
--right;
}
ans = std::max(ans, std::min(height[left], height[right]) * (right - left));
}
return ans;
}