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

【LeetCode】Container With Most Water

时间:2014-12-21 15:11:33      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

Container With Most Water

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.

 

双指针,思路与Trapping Rain Water类似。

数值小的指针往中间逼近。

复杂度O(n)。

 

class Solution {
public:
    int maxArea(vector<int> &height) {
        if(height.empty() || height.size() == 1)
            return 0;
            
        int result = 0;
        int left = 0;
        int right = height.size()-1;
        int leftWall = height[left];
        int rightWall = height[right];
        while(left < right)
        {
            result = max(result, min(leftWall, rightWall) * (right-left));
            if(leftWall <= rightWall)
            {
                left ++;
                leftWall = height[left];
            }
            else
            {
                right --;
                rightWall = height[right];
            }
        }
        return result;
    }
};

技术分享

【LeetCode】Container With Most Water

标签:

原文地址:http://www.cnblogs.com/ganganloveu/p/4176606.html

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