[leetcode]Container With Most Water

来源:互联网 发布:全息瞄准镜 知乎 编辑:程序博客网 时间:2024/06/17 19:39

问题描述:

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 linei 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.


基本思路:

此题最简单的想法是遍历每种可能。时间复杂度是O(n^2);

更好的一个思路是每次改变容器左右壁的短板,希求能通过提升短板的高度来找到更大的容量。可以结合代码理解思路。


代码:

int maxArea(vector<int> &height) {  //C++        int begin = 0 ;        int end = height.size()-1;        int max = 0, tmpArea;                while(begin < end){            tmpArea = (end-begin)*((height[begin]>height[end])?height[end]:height[begin]);            if(tmpArea > max){                max = tmpArea;            }            if(height[begin] > height[end])                end--;            else begin++;        }        return max;    }


0 0
原创粉丝点击