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

11.Container With Most Water (Array; Two-Pointers)

时间:2015-07-20 21:27:30      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

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.

思路:每次移动矮的那侧的指针,并且只关心比原来高的情况(因为宽度已经减小了,高度必须增高才可能面积变大)

class Solution {
public:
    int maxArea(vector<int>& height) {
        int size = height.size();
        int left = 0, right = height.size()-1;
        int maxLeft = 0, maxRight = 0;
        int ret = 0;
       
        while(left < right){
            if (height[left] < maxLeft) {
                left++;
                continue;
            }
            else maxLeft = height[left];
            if (height[right] < maxRight) {
                right--;
                continue;
            }
            else maxRight = height[right];
            ret = max(ret, min(height[left], height[right]) * (right - left));
            
            if(height[left] < height[right])  left++;
            else right--;
        }
        return ret;
    }
};

 

11.Container With Most Water (Array; Two-Pointers)

标签:

原文地址:http://www.cnblogs.com/qionglouyuyu/p/4662568.html

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