描述
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.
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.
#include<iostream>
#include<vector>
#include<limits>
using namespace std;
int MyMin(int a, int b)
{
if (a > b)
return b;
else
return a;
}
int ConWithMostWater(const vector<int>&input)
{
if (input.size() <= 1)
return 0;
int maxsum = INT_MIN;
int begin = 0;
int end = input.size() - 1;
while (begin < end)
{
int tmp = MyMin(input[begin], input[end])*(end - begin);
if (maxsum < tmp)
maxsum = tmp;
if (input[begin] <= input[end])
begin++;
else
end--;
}
return maxsum;
}
int main()
{
const int n = 6;
int a[n] = { 3, 6, 8, 2, 4, 1 };
vector<int> input(a, a + n);
int maxsum = ConWithMostWater(input);
cout << maxsum << endl;
}