Container With Most Water——LeetCode

来源:互联网 发布:网站群发软件 编辑:程序博客网 时间:2024/06/05 10:15

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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.



maxArea=length*heightMin,由于length单调递减,故寻找下一个maxArea需保证下一个heightMin必须增加:

1、

int maxArea(vector<int> &height) {        if(height.size()<=1) return 0;        int low=0;        int high=height.size()-1;        int result=0;        int temp;        while(low<high)        {            if(height.at(high)>=height.at(low))            {                temp=(high-low)*height.at(low);                low++;            }            else            {                temp=(high-low)*height.at(high);                high--;            }            if(temp>result)                result=temp;        }        return result;    }
2、

int maxArea(vector<int> &height) {        if(height.size()<=1) return 0;        int low=0;        int high=height.size()-1;        int result=0;        int temp;        int indexMin=0;        while(low<high)        {            while(height.at(low)<=indexMin&&low<high)            {                low++;            }            while(height.at(high)<=indexMin&&low<high)            {                high--;            }            indexMin=height.at(low)>=height.at(high)?height.at(high):height.at(low);            temp=(high-low)*indexMin;            if(temp>result)                result=temp;        }        return result;    }


0 0