11. Container With Most Water
题目
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container and n is at least 2.
解析
- 再次体会到双指针操作的厉害了
- 理解题意为什么++–就可以实现取最大的容器,容器的面积由短板决定!!!
// 11. Container With Most Water
class Solution_11 {
public:
int maxArea(vector<int> &height) {
int start = 0;
int end = height.size() - 1;
int max_area = 0;
while (start<end)
{
max_area = max(max_area, min(height[start],height[end])*(end-start) );
if (height[start]<=height[end])
{
start++;
}
else
{
end--;
}
}
return max_area;
}
};
题目来源