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.
使用双指针,一个指向前方,一个指向最后。求能盛下的最多的水,就是求面积。
面积等于长度乘以高度,使用双指针先从最长的长度开始计算。
当height[i] < height[j]时,i++往内部推进,否则 j--,同样往内部推进,以期望遇到一个高度更高的height。
class Solution
{
public:
int maxArea(vector<int> &height)
{
int i =0;
int j =height.size()-1;
int max = 0;
int area = 0;
int high = 0;
while(i<j)
{
if(height[i] < height[j])
{
area = height[i]*(j-i);
i++;
}
else
{
area = height[j]*(j-i);
j--;
}
if(area > max)
max = area;
}
return max;
}
};