您的位置:首页 > 大数据 > 人工智能

leetcode-- Container With Most Water

2016-09-09 10:35 363 查看
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.

Subscribe to see which companies asked this question

/**********************************************
*@time 2016/09/09 10:36
*@place Ctrip.15#.9f
*@author  dzq
**********************************************/
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
class Solution
{
public:
    int maxArea(vector<int>& height)
    {
       int lift=0;
       int right=height.size()-1;

       int cap=min(height[lift],height[right])*(right-lift);
       while(lift<right)
       {
           int water=min(height[lift],height[right])*(right-lift);
           if(cap<water) cap=water;
           //比原来容器更大的情况可能只有一种:
           //在lift和right中有一个比=min(height[lift],height[right])更大的高度
           if(height[lift]<height[right])
           {
               lift++;
               continue;
           }
           else
           {
               right--;
               continue;
           }
       }
       cout<<cap<<endl;
       return cap;
    }
};
int main()
{
    Solution solution;
    vector<int> nums;
    nums.push_back(1);
    nums.push_back(1);
    solution.maxArea(nums);
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 面试题