首页 > 其他 > 详细

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

时间:2015-07-20 21:27:05      阅读:222      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!