Leetcode-Container With Most Water

http://oj.leetcode.com/problems/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;

}