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;
}
};