码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode]Container With Most Water

时间:2014-11-13 22:32:10      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:leetcode   算法   

问题描述:

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.


基本思路:

此题最简单的想法是遍历每种可能。时间复杂度是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;
    }


[leetcode]Container With Most Water

标签:leetcode   算法   

原文地址:http://blog.csdn.net/chenlei0630/article/details/41089517

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!