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

leetcode——Container With Most Water

时间:2015-08-26 15:56:37      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

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.

我觉得这是一个非常tricky的问题,如果你不懂得数学解法的话,这道题基本做不出来(穷举法会超时)。而你知道了数学解法后,就觉得这道题很简单。

class Solution {
public:
    int maxArea(vector<int>& height)
    {
        int n = (int)height.size();
        int left = 0;
        int right = n - 1;
        int max_volume = 0;

        while (left < right)
        {
            int x_ais = right - left;
            int y_ais = height[left] < height[right] ? height[left] : height[right];
            if (max_volume < x_ais * y_ais)
            {
                max_volume = x_ais * y_ais;
            }
            if (height[left] < height[right])
            {
                left++;
            }else{
                right--;
            }
        }

        return max_volume;
    }
};


leetcode——Container With Most Water

标签:

原文地址:http://my.oschina.net/u/1047616/blog/497309

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