Leetcode-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.
AC代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <vector>
using namespace std;
int maxArea(vector<int> &height)
{
if(height.size() < 2)
return 0;
int i = 0, j = height.size() - 1;
int maxarea = 0;
while(i < j)
{
int area = 0;
if(height[i] < height[j])
{
area = height[i] * (j - i);
++i;
}
else
{
area = height[j] * (j - i);
--j;
}
if(maxarea < area)
maxarea = area;
}
return maxarea;
}
int main()
{
#ifndef ok
freopen("in5.in", "r", stdin);
freopen("std5.out", "w", stdout);
#endif
vector<int> height;
int time, c;
cin>>time;
while(time--)
{
cin>>c;
height.push_back(c);
}
cout<<maxArea(height)<<endl;
#ifndef ok
fclose(stdin);
fclose(stdout);
#endif
return 0;
}